如何在 JavaScript 中计算字母

How do I count letters in JavaScript?

本文关键字:计算 JavaScript      更新时间:2023-09-26

我已经编写了这个函数(它不起作用),它应该计算全局变量(paraText)中的字母,然后将其插入计数。我该如何解决这个问题?

这是一个学校项目,所以我必须遵守规则。我已经尝试了几乎所有的答案,但我无法让它工作:(也许如果你查看所有代码,你可以看到我做错了什么。

        "use strict";
    var paraText = "";
    var antalParagrafer = 0;
    function addLetter(c) {
        if(!paraText) {
            addParagraph();
        }
        else { //add c to saved textnode
            var tNod = document.createTextNode(c);
            paraText.appendChild(tNod);
    }
    }
        //function is called when enter is pressed
    function addParagraph() {
 /*create a new paragraph with related textnode
    textnode is saved to the global textnodevariable
    add paragraph to the div with id "output"
    you also need to mark the paragraph with the class even/odd
    depending on the class of the previous paragraph*/
        var div = document.getElementById("output");
        var nyParagraf = document.createElement("p");
        div.appendChild(nyParagraf);
        antalParagrafer += 1;
        nyParagraf.className = (antalParagrafer % 2 === 0 ? 'even' : 'odd');
        paraText = nyParagraf;
    }
    //function is called when count letters is pressed
           function countLetters() {
      var count=0;
      for(var i = 0; i < paraText.length; i++) {
        var c = paraText.charAt(i);
        if (c >= 'a' && c <= 'z') count++;
      }
      return count;
    }

我只是去掉非字母,然后使用剩下的长度:

var count = paraText.replace(/[^a-zA-Z]/g, '').length;

你的函数在其他方面工作得很好(尽管它可能没有那么优雅),但count = count ++是错误的;要么使用

count++;

count = count + 1;

语句count = count++不会增加计数器,因为count++的值是变量在增加之前的值,因此您将变量递增,然后赋回之前的值。

使用

简单的比较比对字符串中的每个字符使用正则表达式提供更好的性能:

function countLetters() {
  var count=0;
  for(var i = 0; i < paraText.length; i++) {
    var c = paraText.charAt(i);
    if (c >= 'a' && c <= 'z') count++;
  }
  return count;
}