我正在寻找一种算法来检查另一个字符串是否存在。
例如:
'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
提前致谢。
答案 0 :(得分:17)
使用indexOf
:
'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
您还可以将String.prototype
扩展为contains
功能:
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 :(得分:1)
As Digital指出indexOf
方法是检查的方法。如果您想要更加声明性的名称,例如contains
,那么您可以将其添加到String
原型中。
String.prototype.contains = function(toCheck) {
return this.indexOf(toCheck) >= 0;
}
之后,您的原始代码示例将以书面形式工作
答案 2 :(得分:1)
如何改变默默无闻:
!!~'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);
使用Bitwise NOT和布尔值来将其转换为布尔值而不是将其转换回来。
答案 3 :(得分:0)
我认为使用预先编译的基于Perl的正则表达式会非常有效。
RegEx rx = new Regex('Hello, my name is jonh', RegexOptions.Compiled);
rx.IsMatch('Hello, my name is jonh LOL.'); // true
答案 4 :(得分:0)
另一个选项可以是使用match()匹配正则表达式:http://www.w3schools.com/jsref/jsref_match.asp。
> var foo = "foo";
> console.log(foo.match(/bar/));
null
> console.log(foo.match(/foo/));
[ 'foo', index: 0, input: 'foo' ]