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

Javascript 检查另一个字符串中是否存在字符串的最佳方法是什么?,javascript,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 提前谢谢 使用: 您还可以扩展String.prototype以具有包含功能: String.prototype.contains

可能重复:

我正在寻找一种算法来检查另一个字符串中是否存在字符串

例如:

'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
提前谢谢

使用:

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

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

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

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

另一个选项是使用match()匹配正则表达式:


正如Digital所指出的,
indexOf
方法是检查的方法。如果您想要一个更具声明性的名称,如
包含
,则可以将其添加到
字符串
原型中

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);

使用按位NOT和to布尔NOT将其转换为布尔值,而不是将其转换回布尔值。

进一步回答这个问题,您可以创建
函数contains(haystack,needle){return haystack.indexOf(needle)>-1;}
甚至在字符串上创建一个prototype@Jonathan我添加了一个
String.prototype
函数,
val>-1
更少operations@zzzzBov,从技术上讲是!!这是不必要的。因此,只有波浪线可以工作……这取决于您需要布尔值的严格程度。我同意,
~
将输出正确的错误状态。我正在使用JavaScript,但谢谢:PEven更好:
var regex=/Hello,我的名字是jonh/;test(“你好,我的名字是jonh LOL.”;//true
这里提供了检查字符串是否在字符串中的最常用方法的基准:
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);