关于javascript:检查另一个字符串是否存在的最佳方法是什么?

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

事先谢谢。


使用indexOf

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

您还可以扩展String.prototype以具有contains功能:

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所指出的,indexOf方法是检查的方法。如果您想要一个更具声明性的名称,比如contains,那么您可以将它添加到String原型中。

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