簡體   English   中英

使用不帶正則表達式的循環匹配字符串上的模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM