使用JavaScript计算字符串中的句子数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JavaScript计算字符串中的句子数相关的知识,希望对你有一定的参考价值。
已经有几个类似的问题:
- Splitting textarea sentences into array and finding out which sentence changed on keyup()
- JS RegEx to split text into sentences
- Javascript RegExp for splitting text into sentences and keeping the delimiter
- Split string into sentences in javascript
我的情况有所不同。
我需要count个字符串中的句子数。
最接近我需要的答案是:
str.replace(/([.?!])s*(?=[A-Z])/g, "$1|").split("|")
这里唯一的问题是此RegEx假定句子以大写字母开头,但情况并非总是如此。
更具体地说,我将句子定义为:
- 以字母(无论是否大写),数字甚至是符号(例如$或€)开头。
- 以标点符号结尾,例如“。”,“?”或“!”。
但是,如果一个句子包含一个数字,而该数字本身包含一个“。”或一个“,”,则该句子应被视为一个句子而不是两个句子。
最后但并非最不重要的一点,我们可以假设除了第一个句子之外,一个句子前面都有一个空格。
给出一个随机字符串,如何计算javascript(或CoffeeScript)包含的句子数?
一个解决您问题的正则表达式是:
w[.?!](s|$)
各部分如下:
w - Word character
[.?!] - Punctuation as specified.
(s|$) - Whitespace character OR the end of the string.
您也许可以使用角色类而不是组:
[s|$]
对于最后一个元素,但这不适用于https://regex101.com/。
经过以下测试:
与普遍的看法相反,Lorem Ipsum不只是随机的文本。起源于公元前45年的一部古典拉丁文学作品,超过2000年old。理查德·麦克林托克(Richard McClintock),弗吉尼亚州的汉普顿-悉尼大学,抬头看的比较模糊来自Lorem Ipsum段落的拉丁词consectetur通过古典文学中的单词引用,发现了毫无疑问source。 Lorem Ipsum来自1.10.32节和西塞罗(Cicero)撰写的“ de Finibus Bonorum et Malorum”(善恶的极端)的1.10.33,写于45 BC。伦理学理论,在Renaissance。第一行期间非常流行Lorem Ipsum的文章“ Lorem ipsum dolor sit amet ..”来自于第1.10节。32。
并找到六个句子(将句子结尾加粗,而不是实际匹配)。请注意,如果出于任何原因依赖不同的分组,可能会造成问题。
我想出了一个简单得多的解决方案。
let text = text + " ";
const count = text.split(". ").length - 1;
console.log(count);
以上是关于使用JavaScript计算字符串中的句子数的主要内容,如果未能解决你的问题,请参考以下文章