1

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?

3
  • 3
    Compare the return value of indexOf to zero: stackoverflow.com/questions/1767246/… Commented Sep 18, 2012 at 17:37
  • Vikdor, that doesn't work because indexOf matches anywhere in the string, which I don't want. I don't wnat anywhere in the string only from the start. Commented Sep 18, 2012 at 17:38
  • 2
    @Sarahpre Vikdor's point is that if it does match at the start of the string the result will be zero Commented Sep 18, 2012 at 17:40

3 Answers 3

4

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 ) {} 
Sign up to request clarification or add additional context in comments.

1 Comment

For the sake of JS sanity, that should probably be ===. :-)
1
<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.

Comments

0

What you describe means you want compare with zero:

if ( "upload a file".indexOf(user_input.toLowerCase()) == 0) { } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.