在文本节点中计算字母数量

3
我正在制作一个虚拟写手,但在段落节点内计算文本节点中的字母数量方面遇到了问题。
代码如下: http://jsfiddle.net/Rfq68/。 我的问题在于countLetters()函数,我尝试了以下代码:
var temp = ntext.match(new RegExp(search.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "g"));
count = temp;

但它完全没有起作用,现在我需要你的帮助!谢谢!

ntext.length 怎么样? - Joe Simmons
1
ntext.replace(/[^a-zA-Z]/g, '').length 怎么样? - Joe Simmons
我也尝试了那个,但当我点击计数按钮时,什么也不会加载,与此同时,如果没有任何内容,则会弹出警告提示没有字母。 - Davy Karlsson
1
哦,ntext是文本节点。然后你需要使用return ntext.data.replace(/[^a-zA-Z]/g, '').length;修复的fiddle - Joe Simmons
是的...我经常这样做哈哈。 - Joe Simmons
显示剩余3条评论
1个回答

4
首先,你试图在一个节点上使用.match()方法; 只有字符串具有该方法。
其次,我会从节点中获取文本数据,替换所有的非字母字符,然后使用所有字符串可用的.length属性进行计数。
function countLetters() {
    return ntext.data.replace(/[^a-zA-Z]/g, '').length;
}

修复后的代码


/[^a-z]/gi 可以使用吗? - Pavlo
是的,我觉得前者更加明确,但两种方法的效果都一样。 - Joe Simmons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接