可能会有重复:
JavaScript:字符串包含
我正在寻找一种算法来检查一个字符串是否存在于另一个字符串中。
例如:
'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
提前感谢。
可能会有重复:
JavaScript:字符串包含
我正在寻找一种算法来检查一个字符串是否存在于另一个字符串中。
例如:
'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
提前感谢。
使用 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
function contains(haystack, needle) { return haystack.indexOf(needle) > -1; }
或者在 String 原型上创建一个。 - Jonathan FinglandString.prototype
函数。 - Digital PlaneindexOf
方法是检查的方式。如果你想要一个更具说明性的名称,比如contains
,那么你可以将它添加到String
原型中。String.prototype.contains = function(toCheck) {
return this.indexOf(toCheck) >= 0;
}
之后您的原始代码示例将按照原样正常工作
去尝试一下变得不为人知怎么样:
!!~'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);
使用位非运算符和布尔非运算符将其转换为布尔值,然后再将其转换回来。
val > -1
的操作更少。 - zzzzBov~
将输出正确的falsey状态。 - zzzzBov我认为使用预编译的基于Perl的正则表达式会非常高效。
RegEx rx = new Regex('Hello, my name is jonh', RegexOptions.Compiled);
rx.IsMatch('Hello, my name is jonh LOL.'); // true
var regex = /你好,我的名字是约翰/; regex.test("你好,我的名字是约翰 LOL。"); // true
- clarkb86> var foo = "foo";
> console.log(foo.match(/bar/));
null
> console.log(foo.match(/foo/));
[ 'foo', index: 0, input: 'foo' ]