what is the best way to check if a string exists in another?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
JavaScript: string contains
我正在寻找一个算法来检查另一个字符串是否存在。
例如:
1 2 | 'Hello, my name is jonh LOL.'.contains('Hello, my name is jonh'); //true 'LOL. Hello, my name is jonh'.contains('Hello, my name is jonh'); //true |
事先谢谢。
使用
1 2 | 'Hello, my name is jonh LOL.'.indexOf('Hello, my name is jonh') > -1; //true 'LOL. Hello, my name is jonh'.indexOf('Hello, my name is jonh') > -1; //true |
您还可以扩展
1 2 3 4 5 | String.prototype.contains = function(substr) { return this.indexOf(substr) > -1; } 'Hello, my name is jonh LOL.'.contains('Hello, my name is jonh'); //true 'LOL. Hello, my name is jonh'.contains('Hello, my name is jonh'); //true |
去默默无闻怎么样:
1 2 3 | !!~'Hello, my name is jonh LOL.'.indexOf('Hello, my name is jonh'); //true if(~'LOL. Hello, my name is jonh'.indexOf('Hello, my name is jonh')) alert(true); |
使用位Not和to Boolean Nots将其转换为Boolean而不是将其转换回。
正如Digital所指出的,
1 2 3 | String.prototype.contains = function(toCheck) { return this.indexOf(toCheck) >= 0; } |
之后,您的原始代码示例将以书面形式工作
另一个选项可以是使用match()匹配正则表达式:http://www.w3schools.com/jsref/jsref_match.asp。
1 2 3 4 5 | > var foo ="foo"; > console.log(foo.match(/bar/)); null > console.log(foo.match(/foo/)); [ 'foo', index: 0, input: 'foo' ] |
我认为使用预编译的基于Perl的正则表达式会非常有效。
1 2 | RegEx rx = new Regex('Hello, my name is jonh', RegexOptions.Compiled); rx.IsMatch('Hello, my name is jonh LOL.'); // true |