计算字符串中的句子数,同时计算javascript中的小数

时间:2016-02-09 16:55:36

标签: javascript split

假设我有一个段落:

var word = "Hi, I am new to this world! I am a robot, my name is RX1.456 and my age is 1.0453 days. Thats all for now, you have any qeustions?"

我想找到我所做的句子数量(在本例中为3):

word = word.toLowerCase();

word.split(/[.!?]+/).filter(Boolean).length;

问题是我不知道如何处理点运算符,因为它不标记句子的结尾,例如小数。我该如何处理?

4 个答案:

答案 0 :(得分:2)

句子后跟一个终止字符和一个空白字符。

我们可以用JavaScript来证明这一点。首先通过变量添加对DOM元素的引用。在这种情况下,我们需要引用原始段落,按钮和显示输出的段落。

通过我们对button元素的引用,我们可以监听click事件。在它上面,我们将显示前一段的句子数。为此,我们希望将句子分解为一个数组,并在作为参数传入的分隔符中使用split()函数。

此分隔符是

[.?!]\s

这匹配句子终止字符,可以是句号,问号或解释标记,后面跟一个空白字符。

var par = document.getElementById('par');
var button = document.getElementById('my-button');
var numSentences = document.getElementById('count-sentences');

button.addEventListener('click', function() {
  numSentences.innerHTML = par.innerHTML.split(/[.?!]\s/).length;
});
<p id='par'>This is a sentence. is this a sentence? This is a sentence!</p>
<button id='my-button'>Count sentences</button>
<p id='count-sentences'></p>

答案 1 :(得分:1)

pherris是对的:句子之后的句号应该跟一个空格。 您可以修改正则表达式来解释它:

word.split(/[.!?]+\s/).filter(Boolean).length;

答案 2 :(得分:0)

查找以空格结尾的句子。这有助于排除数字。在字符串中添加终止空格,以确保包含最后一句。

/[\.!\?]+\s/g

答案 3 :(得分:0)

使用negative lookahead来表示数字:

word.split(/[.!?](?!\d)/g).filter(Boolean).length;

这将匹配非数字,空格或字符串结尾。