【问题标题】:Count how many times a single letter appears in a word计算单个字母在单词中出现的次数
【发布时间】:2013-12-10 22:00:40
【问题描述】:

我对 JavaScript 很陌生,我想弄清楚如何计算单个字母在一个单词中出现的次数。比如'p''apple'中出现了多少次

这是我到目前为止所写的内容,但我无法弄清楚我哪里出错了。

var letterInWord = function (letter, word) {
  var letter = 0;
  var word = 0;
  for (var i = 0; i < letter.charAt; i+= 1) {
    if (letter.charAt(i) === " " = true) {
        letter++;
        console.log('The letter `letter` occurs in `word` 1 time.');
    } 
  }
  return letter;
};

【问题讨论】:

    标签: javascript string charat


    【解决方案1】:

    你有很多问题:

    1. 您正在重用参数名称作为局部变量名称。使用不同的标识符来跟踪函数中的每一位信息。
    2. letter.charAt 是未定义的,如果 letter 是一个数字,如果 letter 是一个字符串是一个函数。不管怎样,i &lt; letter.charAt 毫无意义。
    3. 如果您在word 中搜索letter,为什么要查看letter.charAt(i)?你可能想要word.charAt(i)
    4. " " = true 毫无意义。

    也许你的意思是这样的?

    var letterInWord = function (letter, word) {
      var count = 0;
      for (var i = 0; i < word.length; i++) {
        if (word.charAt(i) === letter) {
            count++;
        } 
      }
      return count;
    };
    

    【讨论】:

    • 谢谢,我很困惑,因为我是新的:) 问题。我将您的代码复制到 Chrome 控制台中,但不能正确运行它,因为我总是返回错误。我应该运行什么函数来查看我想要的 console.log 输出?
    • @jstone 你看到了什么错误?它在我的控制台上运行良好。
    • 我输入var letterInWord = function (letter, word) { ... };并回车;结果是undefined(因为var)。然后我输入letterInWord('p', 'apple') 并回车,结果是2。
    • 谢谢你真棒。我坚持最后一部分:我正在尝试在控制台中打印出来。 console.log('字母'字母'出现在'单词''X'次。').我收到了这个语法错误,所以我在写它似乎不能正常工作。
    • @jstone 那是因为您使用单引号来分隔字符串以及字符串中的单引号。最简单的解决方案就是使用双引号来分隔字符串:console.log("The letter 'letter' occurs in 'word' 'X' times.")
    【解决方案2】:
    'apple'.match(/p/g).length // outputs 2
    

    换句话说:

    var letterInWord = function (letter, word) {
      return (word.match( new RegExp(letter, 'g') ) || []).length;
    };
    

    FIDDLE

    【讨论】:

    • 谢谢,虽然我很困惑你刚刚做了什么,因为你把它放在我的代码中以使其工作,还是你把它放在控制台中运行?
    • 这样做似乎容易多了?
    • @jstone - 此答案中显示的单行函数完全取代了您现有的九行函数。这是计算字母数的另一种方法。
    • 请注意:这不适用于某些字符,例如$ 将始终返回 1,. 将始终返回长度 word
    • @adeneo 我并不是说这是一个糟糕的解决方案——事实上它可能非常接近我在自己的代码中编写的内容——只是 OP 应该谨慎使用它,因为它可能会导致一些意想不到的结果,对于那些对正则表达式的工作原理没有合理理解的人来说真的很困惑。
    【解决方案3】:

    这是一个较小的函数,它也适用于 $* 之类的字符(由于它在字符串上调用 length,因此无需使用 || []

    'apple'.replace(/[^p]/g,'').length // outputs 2
    
    
    function charcount(c, str) {
      return str.replace(new RegExp('[^'+c+']','g'),'').length
    }
    
    console.log = function(x) { document.write(x + "<br />"); };
    console.log( "'*' in '4*5*6' = " + charcount('*', '4*5*6') ) // outputs 2
    console.log( "'p' in 'pineapples' = " + charcount('p', 'pineapples') )// outputs 3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多