2015-12-08 5 views

ответ

5

Чтобы проверить, если строка не содержит подстроку, используйте

if(myVar.indexOf(err) === -1) { 

Или

!~myVar.indexOf(err) 

~ является BitWise NOT operator«Выступает оператор NOT на каждом бите. NOT a дает инвертированное значение (как дополнение) a. " и ! - Logical NOT, поэтому преобразование индекса в логический результат.

String#indexOf возвращает -1, если подстрока не найдена.

+0

** 0 ** больше, чем ** - 1 ** Я полагаю! – Rayon

+0

или '! ~ MyVar.indexOf (err)': p –

+0

@BhojendraNepal Проверить комментарий _ "это означает, что myVar NOT содержит No msg" _, OP не пытается найти, если строка содержит подстроку, OP хочет проверить, действительно ли строка не содержат – Tushar

0

Нет, ваша логика неверна. indexof return -1, если sub string нет.

var err = "No msg"; 

if(myVar.indexOf(err) == -1){ 
//this means myVar NOT containing No msg 
} 
0
var err = "No msg"; 
if(myVar.indexOf(err) > -1){ 
//this means myVar contains "No msg" 
} 
else{ 
//this means myVar does NOT contain "No msg" 
} 

Или

var err = "No msg"; 
if(myVar.indexOf(err) === -1){ 
//this means myVar does NOT contain "No msg" 
} 

indexOf возвращает индекс первого символа, который является строкой, совпадающим. так что если

myVar = "There is No msg in here"; 
myVar.indexOf("No msg") == 9; //true 

Но

myVar = "There is nothing in here"; 
myVar.indexOf("No msg") == -1; //true 

Это происходит потому, что indexOf() возвращает -1, если он не может найти то, что он искал.