问题
I currently am matching user input as follows:
user_input = "upload a file"
if ( "upload a file".indexOf(user_input.toLowerCase()) > -1 ) {}
This work fine but the problem is, it matches "a file" which I don't want. I want it to only match if the beginning is correct.
This should match:
"upload"
"u"
"upload a"
This should not match, because the string does not match from the start:
"a"
"file"
Are there any suggestions on how to make this happen with indexOf
?
回答1:
indexOf
return the index of the match, so if you want to test if it match at the beginning just check if it returns 0
user_input = "upload a file"
if ( "upload a file".indexOf(user_input.toLowerCase()) == 0 ) {}
回答2:
What you describe means you want compare with zero:
if ( "upload a file".indexOf(user_input.toLowerCase()) == 0) { }
回答3:
<script>
user_input = "upload a file"
if ( "upload a file".**substr**(0, user_input.length) == user_input.toLowerCase()) {}
</script>
Use the inputs to your advantage...
http://www.w3schools.com/jsref/jsref_substr.asp
Grab first X characters of the string, and make sure the whole string matches or any number of the characters you would like.
来源:https://stackoverflow.com/questions/12482136/javascript-string-matching-only-at-the-start-versus-using-indexof