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

what is the best way to check if a string exists in another?

本文关键字:字符串 最佳 是什么 方法 另一个 是否 存在 检查      更新时间:2023-09-26

可能重复:
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

正如Digital所指出的,indexOf方法是检查的方法。如果您想要一个更具声明性的名称,如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);

使用Bitwise NOT和to boolean NOTs将其转换为布尔值,而不是将其转换回布尔值。

另一个选项可以是使用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' ]

我认为使用预编译的基于Perl的正则表达式会非常有效。

RegEx rx = new Regex('Hello, my name is jonh', RegexOptions.Compiled);
rx.IsMatch('Hello, my name is jonh LOL.'); // true