【问题标题】:How to remove a specific letter from a string如何从字符串中删除特定字母
【发布时间】:2020-12-12 19:47:41
【问题描述】:

添加一个接受字符串和字母的 removeLetter 函数。函数的结果应该是字符串,它没有指定的字母字符。 人怎么办?

function deleteLetter(string, letter) {
  let final = '';
  for (let i = 0; i<string.length; i++) {
   if (string[i] === letter) {
     final.concat(string[i])
   }
   return final;
  }
}

【问题讨论】:

标签: javascript


【解决方案1】:

你可以使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

let str = 'test'
let replaced = str.replace('e', '')
console.log(replaced) // tst

但请记住,当您使用字符串作为第一个参数时,只会替换第一次出现。当您想删除所有字母时使用正则表达式解决方案

【讨论】:

  • 请注意replace只会替换第一次出现,而不是全部
  • 是的,没错。忘记了。
【解决方案2】:

你应该在函数结束时返回结果,而不是在 for 循环中

function deleteLetter(string, letter) {
  let final = ""
  for (let i = 0; i < string.length; i++) {
    if (string[i] !== letter) {
      final += string[i]
    }
  }
  return final
}

console.log(deleteLetter("asdasd", "a"))

【讨论】:

    【解决方案3】:
    const removeLetter = (str, letter) =>
      str.split('').filter(n => !n.includes(letter)).join('');
    
    console.log(removeLetter('asd', 'a'));
    

    const removeLetter = (str, letter) => str.replace(/[^letter]/, '');
    
    console.log(removeLetter('asd', 'a'));
    

    【讨论】:

    • 为什么不直接拆分成字母呢?
    • 第二个只会删除第一个出现的字母
    【解决方案4】:

    借助 ES2021,您将能够使用 String.replaceAll(已在 firefox stable (79) 和 chrome beta(85)/canary(86) 上可用)

    console.log("test".replaceAll("t", ""))

    【讨论】:

    • 你可以在这里查看兼容性 → kangax.github.io/compat-table/es2016plus/…
    • 我正在使用 Chrome 84.0.4147.135 并得到 "Uncaught TypeError: \"test\".replaceAll is not a function".
    • @Cid 我漏读了兼容性表,chrome 84 上只有 beta (85) 和 canary (86) 你需要设置一个标志,修改答案
    【解决方案5】:

    使用拼接和 indexOf

    function delLetter(word,letter){
      let wordArr = word.split('');
        let idx = wordArr.indexOf(letter);
        wordArr.splice(idx,1); // deleted here
      return wordArr.join('');
    }
    
    console.log(delLetter('twinkle','w'))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多