Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查一个字符串中是否存在多个字符串中的任何一个_Javascript - Fatal编程技术网

Javascript 检查一个字符串中是否存在多个字符串中的任何一个

Javascript 检查一个字符串中是否存在多个字符串中的任何一个,javascript,Javascript,我需要检查一组字符串中是否有任何一个存在于一个主字符串中 目前我使用一个带有for循环的数组来检查每个字符串 有没有一种更简单的方法,比如我在上一篇文章中遇到的ruby解决方案- A做了一个小实验,发现下面的方法很有效。唯一的开销是为数组的每个元素生成regexp。如果check为零或更高,则找到其中一个字符串 if (!('included' in Array.prototype)) { Array.prototype.included = function() { return

我需要检查一组字符串中是否有任何一个存在于一个主字符串中

目前我使用一个带有for循环的数组来检查每个字符串

有没有一种更简单的方法,比如我在上一篇文章中遇到的ruby解决方案-


A做了一个小实验,发现下面的方法很有效。唯一的开销是为数组的每个元素生成regexp。如果
check
为零或更高,则找到其中一个字符串

if (!('included' in Array.prototype)) {
  Array.prototype.included = function() {
    return arr.map(function (item) {
      var regex = new RegExp(item, 'g');
      if (regex.test(str)) return true;
      return false;
    }).indexOf(true);
  };
}
要返回布尔值而不是数字,只需将其更改为:

if (!('included' in Array.prototype)) {
  Array.prototype.included = function () {
    var regex, found = false;
    for (var i = 0, l = this.length; i < l; i++) {
      regex = new RegExp(this[i], 'g');
      if (regex.test(str)) { found = true; break; }
    }
    return found;
  };
}

var found = arr.included(str);
if(!('include'在Array.prototype中)){
Array.prototype.include=函数(){
var regex,found=false;
for(var i=0,l=this.length;i

这是我之前答案的编辑,因为我意识到我实际上没有回答这个问题:)

for循环有多复杂?这就是循环存在的目的。假设字符串集是一个名为
setofstring
的数组,并且主字符串位于名为
mainString
的变量中:

var stringExists = false;
var setOfStrings = ['string1', 'string2', 'string3'];

for(var i =0;i < setOfStrings.length; i++){
  if(mainString.indexOf(setOfStrings[i]) != -1)
      stringExists = true;
}
var stringExists=false;
var setOfStrings=['string1','string2','string3'];
对于(var i=0;i

它可能没有您的Ruby构造那么简洁,但它非常普通。

正则表达式
RegExp(strings.join('|')).test(myString)
不幸的是,使用此string19将为string1返回true,但这是有效的:matchfind=RegExp(“^(“+strings.join(“|”)+”).test(myString);基本上是检查^(string1 | string2 | string3)$而不是string1 | string2 | string3hi andy谢谢,但我仍然很难掌握正则表达式,所以实际上是在寻找一个简单易记的解决方案。
var stringExists = false;
var setOfStrings = ['string1', 'string2', 'string3'];

for(var i =0;i < setOfStrings.length; i++){
  if(mainString.indexOf(setOfStrings[i]) != -1)
      stringExists = true;
}