假设我有一个段落:
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;
问题是我不知道如何处理点运算符,因为它不标记句子的结尾,例如小数。我该如何处理?
答案 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)