我需要檢查一個主字符串中是否存在任何一組字符串。檢查字符串中是否存在多個字符串
目前我正在使用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 –