我需要检查一个主字符串中是否存在任何一组字符串。检查字符串中是否存在多个字符串
目前我正在使用for循环检查每个字符串。
有没有一种简单的方法,这样的解决方案,其中红宝石我遇到的 - How to compare a string against multiple other strings
["string1","string2","string3"].include? myString
我需要检查一个主字符串中是否存在任何一组字符串。检查字符串中是否存在多个字符串
目前我正在使用for循环检查每个字符串。
有没有一种简单的方法,这样的解决方案,其中红宝石我遇到的 - How to compare a string against multiple other strings
["string1","string2","string3"].include? myString
你的循环有多复杂?这是循环存在的。假设你的字符串的集合称为setOfStrings
数组和你的主串是在一个名为mainString
变量:
var stringExists = false;
for(var i =0;i < setOfStrings.length; i++){
if(mainString.IndexOf(setOfStrings[i]) != -1)
stringExists = true;
}
它可能不是因为你的Ruby构建的简洁,而且它很该死常见。
一个做了一个小实验,发现以下的罚款。唯一的开销是为数组的每个元素生成正则表达式。如果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);
这是我以前的答案的编辑,因为我意识到我实际上并没有回答的问题:)
嗨安迪感谢,但我仍然有一些困难的正则表达式,所以实际上是寻找一个简单的记住解决方案。 –
正则表达式? 'RegExp(strings.join('|'))。test(myString)' – elclanrs
不幸的是,这个字符串19将会返回true而不是string1,但是这会起作用:matchfound = RegExp(“^(”+ strings.join(“|”)+ “)$”)测试(myString的); 基本上检查^(string1 | string2 | string3)$而不是string1 | string2 | string3 –