我需要检查一个主字符串中是否存在任何一组字符串。
目前我正在使用带有 for 循环的数组来检查每个字符串。
有没有更简单的方法,比如我遇到的红宝石解决方案 -如何将一个字符串与多个其他字符串进行比较
["string1","string2","string3"].include? myString
我需要检查一个主字符串中是否存在任何一组字符串。
目前我正在使用带有 for 循环的数组来检查每个字符串。
有没有更简单的方法,比如我遇到的红宝石解决方案 -如何将一个字符串与多个其他字符串进行比较
["string1","string2","string3"].include? myString
你的 for 循环有多复杂?这就是循环存在的原因。假设您的字符串集是一个名为的数组setOfStrings
,而您的主字符串位于一个名为的变量中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;
}
它可能不像您的 Ruby 构造那样简洁,但它非常常见。
A做了一个小实验,发现以下工作正常。唯一的开销是为数组的每个元素生成正则表达式。如果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);
这是对我之前答案的编辑,因为我意识到我实际上并没有回答这个问题:)