2016-04-25 54 views
0

我有以下的代码,但是从事业部ID对文本有硬道理,下一句的第一个字加盟,并享有其作为1个字,而不是2问题与字数脚本fullstops

代码:

var value = $('#RichHtmlField_displayContent').text(); 

console.log("text", value) 

    if (value.length == 0) { 
     $('#show_word_count').html(0); 
     return; 
    } 

    var wordCount = value.match(/\S+/ig).length 
     $('#show_word_count').html(wordCount); 
    }; 

$(document).ready(function() { 
     $('#RichHtmlField_displayContent').change(counter); 
     $('#RichHtmlField_displayContent').keydown(counter); 
     $('#RichHtmlField_displayContent').keypress(counter); 
     $('#RichHtmlField_displayContent').keyup(counter); 
     $('#RichHtmlField_displayContent').blur(counter); 
}); 

所以我想要做的是所有的句号之后添加一个空格,问号然后计算总字。

+1

如果你清理你的代码格式,你会发现你的例子中有一个孤立的括号'};'。另外,如果你提供了一个工作示例/代码片段,它将非常有用。 – Moob

回答

0

而不是使用正则表达式匹配,你可以使用正则表达式分隔符的文本分成数组:

var wordCount = value.split(/[\s.?]+/).length 

这只分裂基础上的空白,句号和问号按您的问题(并计带连字符的单词作为一个单词)。您可以根据需要将更多的单词分隔符添加到RegEx中。

+0

感谢队友第一次工作......没有期待马上回答。第一次使用本网站。真的很感谢你的帮助大家 –

+0

@JohnSmith没问题:)欢迎来到Stack Overflow! – lerouche

+0

嗨工作好,但对于一条新线,它将第一份工作和最后一份工作放在一起,并将其视为一个,除非有一个完整的 –

2

如果将正则表达式中的“s”替换为“w”,它将会搜索单词。见下面 -

function wordCount() { 
 
    var value = document.getElementById("text").value; 
 
    document.getElementById("result").innerText = value.match(/\w+/ig).length; 
 
} 
 

 
wordCount();
<textarea id="text">Some text. Here!</textarea> 
 
<div id="result"></div> 
 
<button onclick="wordCount()">Word Count</button>

这将匹配的字母或数字(包括下划线)任何字符串。

有关正则表达式的更深入讨论,请查看questionMozilla Developer Network

0

您可以使用replace进行分割。

请参阅JSFiddle

注意:它没有针对所有标点进行优化(例如...),您可以修改正则表达式来存档您需要的东西。