2015-03-19 2 views
0

Я пытаюсь использовать IndexOf, чтобы найти позицию сегмента строки. Но строка может выглядеть следующим образом:Как я могу использовать IndexOf, чтобы найти точное соответствие?

blahblahEAPPWForms 
EAPPWTextblah blah 
EAPPWblah 

Приведенные выше примеры могут быть в любом порядке, но иногда может быть просто ищет «EAPPW» сама по себе, и он не может быть там вообще. Но если сначала появляются «EAPPWText» или «EAPPWForms», я получаю его индекс.

+0

Значит, вам нужен индекс «EAPPW», если он первый, но «EAPPWText», если он на первом месте? Итак, первый экземпляр одного из них? – Shoe

+2

s.IndexOf ("EAPPW"); –

+0

Как @inquisitive_mind сказал, что не так с 's.IndexOf (« EAPPW »);'? – Shoe

ответ

1

ваш вопрос немного сбивает с толку, поскольку это не объясняет, если вы хотите только получить только "EAPPW" строку все время, или вы хотите получить его, если он есть, и если вы этого не сделаете, вы получите какой-либо кусок, который начинается с "EAPPW"

так, вот как получить оба. предположим, что вы ищете слово "blah" и только слово "blah" вы должны иметь возможность использовать регулярное выражение, чтобы найти его. это регулярное выражение ищет "blah" в начале, середине, конце строки и если это целая строка.

Метод поиска вернет индекс первого вхождения.

x = "this is blah"; 
reg = /^blah$|^blah\s+|\s+blah\s+|\s+blah$/; 
var location = x.search(reg); 

, если вы хотите получить «blahaaa» если «бла» не существует, то вы можете проверить, если результат равен -1, то делать IndexOf.

if(location === -1) 
{ 
    location = x.indexOf("blah"); 
} 
0

Очень просто, если вы ищете только, что, например, без другого текста сделать:

//Check if it's the whole string 
    if(str == "EAPPWText") 
    return 0; 

    //Check if it's in the start or end 
    int nIndex = str.IndexOf("EAPPWText" + " "); 
    if(nIndex >= 0) 
     return nIndex; 

    //Check if it's the LAST word 
    nIndex = str.IndexOf(" " + "EAPPWText"); 
    return nIndex; 
Смежные вопросы