Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算JavaScript中的字母数?_Javascript_Regex - Fatal编程技术网

如何计算JavaScript中的字母数?

如何计算JavaScript中的字母数?,javascript,regex,Javascript,Regex,我编写了这个函数(不起作用),它应该对全局变量(paraText)中的字母进行计数,然后插入它进行计数。我如何解决这个问题 这是一个学校项目,所以我必须遵守一定的规则。我已经尝试了几乎所有的答案,但我无法让它工作:(也许如果你看看所有的代码,你可以看到我做错了什么 "use strict"; var paraText = ""; var antalParagrafer = 0; function addLetter(c) { if(!p

我编写了这个函数(不起作用),它应该对全局变量(
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 paraText=“”;
var antalParagrafer=0;
函数addLetter(c){
if(!paraText){
添加段落();
}
else{//将c添加到已保存的textnode
var tNod=document.createTextNode(c);
附加副词(tNod);
}
}
//按下enter键时调用函数
函数add段落(){
/*创建具有相关textnode的新段落
textnode保存到全局textnodevariable
将段落添加到id为“output”的div中
您还需要在段落中标记偶数/奇数类
取决于上一段的类别*/
var div=document.getElementById(“输出”);
var nypararaf=document.createElement(“p”);
儿童分部(尼帕拉夫);
安塔帕拉弗+=1;
nyParagraf.className=(antalParagrafer%2==0?“偶数”:“奇数”);
paraText=nyparaf;
}
//当按下计数字母时调用函数
函数countLetters(){
var计数=0;
for(变量i=0;i如果(c>='a'&&c我会去掉非字母,然后使用剩下的长度:

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

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

count++;


语句
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;
}
函数countLetters(){
var计数=0;
for(变量i=0;i如果(c>='a'&&c离题建议:不要使此函数依赖于全局变量,而是在其定义中添加一个参数(例如,
函数countLetters(text)
),然后计算该参数中包含的字母(即,
文本中,而不是
paraText
)。这花费很少,但使您的函数更通用。我没有让它工作,我已经更改了页面顶部的问题,因此请在那里查找mor信息。@Eric:函数工作,假设它是字符串,如原始代码所示。演示:您的代码不工作的原因是变量不是不是一个字符串,而是一个HTML元素。对HTML元素使用一个变量,在只收集文本的地方使用一个字符串变量。我拿出两个函数,编写了一个字符串I paratext,它工作得很好,那么为什么它不能与其他两个函数一起工作呢?我做错了什么。@Eric:paratext变量包含一个HTML元素,而yo你试着像字符串一样使用它。将元素存储在一个变量中,将文本副本存储在另一个变量中,并在计算字母时使用该变量。我觉得自己像个十足的白痴,我试着按照你告诉我的去做,但我无法让它工作。我添加了来自学校的内容,这样你就可以看到他们希望它是什么样子。
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;
}