Javascript简单单词计数器



我正试图在Javascript中为textarea元素制作一个简单的单词计数器。到目前为止,我已经尝试了很多方法,但每个人都失败了。我在网上搜索了一下,但只找到了使用函数或JS命令和语法的解决方案,但我仍然不知道。目标是对最多包含140个字符的文本区域中的单词进行计数。文本也可以在多行上,所以我必须考虑新的行符号。到目前为止,我写的是:

for (let i = 0; i < text.length; i++) {
if (text[i]==' ' && (text[i-1]!==' ' && text[i-1]!=='n')) { 
wc++;

}
else if(text[i]=='n' && text[i-1]!==' '){
wc++;
}
}

它有点管用,但只有在单词后面按空格时才算数。有没有办法从用户只键入一个字母开始计数?编辑:我已经尝试过.split("(方法,但它不适用于ENTR/RETURN键。我的目标是在用户键入一封信后立即开始计数。

您可以将split与正则表达式一起用于空白

let words = text.split(/W/);
wc = words.length;

split将您的字符串分解为一个数组,每次找到您传递给它的表达式时,它都会创建一个新的数组条目。

正则表达式/W/获取空白("one_answers"\n"(

因此,通过这种方式,它将创建一个每个单词都分开的数组,然后您只需要检查数组的长度

添加了用单个空格替换所有多个空格。如果输入新行,还添加了检查。

document.getElementById("inputField").addEventListener("input", function(e) {
// Get the input text value
var text = this.value;
//replace all multiple spaces with single space
text = text.replace(/ss+/g, " ");
// Initialize the word counter
var wc = 0;
// Loop through the text
// and count spaces in it 
for (let i = 0; i < text.length; i++) {
if (text[i]==' ' && (text[i-1]!==' ' && text[i-1]!=='n')) { 
wc++;
}
else if(text[i]=='n' && text[i-1]!==' '){
wc++;
}
}
// Display it as output
document.getElementById("show").innerHTML = wc;
})
<textarea id="inputField" rows=10 cols="60">
</textarea>
<br><br>
<p> Word Count:
<span id="show">0</span>
</p>

最新更新