[英]matching pattern on the string using loop without regex
我想使用 for 循環匹配字符串上的模式,我創建這樣的代碼:
function partialCheck(str, partial) {
var pattern = [];
for (var i =0; i <= str.length; i++){
if(partial === str[i]+str[i+1]+str[i+2]){
pattern.push(partial);
}
}
return pattern;
}
在測試用例中,它應該顯示如下結果:
console.log(partialCheck('abcdcabdabc', 'abc')); // ["abc","abc"]
console.log(partialCheck('accHghebchg', 'chg')); // ["chg","chg"]
但在第二種情況下,結果是這樣的:
console.log(partialCheck('accHghebchg', 'chg')); // ["chg"]
問題是否可以通過忽略大小寫敏感度而不使用正則表達式將 cHg 放入數組?
之前謝謝。
比較前轉換為小寫。
您還可以使用substr()
而不是連接字符串的特定索引。 這允許您使用任何大小的partial
。
並且您應該將子字符串推送到結果數組,而不是partial
,以便您從字符串中獲取大小寫。
function partialCheck(str, partial) { var pattern = []; partial = partial.toLowerCase(); for (var i = 0; i <= str.length - partial.length; i++) { if (partial === str.substr(i, partial.length).toLowerCase()) { pattern.push(str.substr(i, partial.length)); } } return pattern; } console.log(partialCheck('accHghebchg', 'chg'));
是的,您可以使用substring
使代碼更簡單:
function partialCheck(str, partial) {
var pattern = [];
partial = partial.toLowerCase();
for (var i =0; i <= str.length; i++){
var substr = str.substring(i, i + 3);
if(partial === substr.toLowerCase()){
pattern.push(substr);
}
}
return pattern;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.