使用JavaScript计算字符串中的句子数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JavaScript计算字符串中的句子数相关的知识,希望对你有一定的参考价值。

已经有几个类似的问题:

我的情况有所不同。

我需要count个字符串中的句子数。

最接近我需要的答案是:

str.replace(/([.?!])s*(?=[A-Z])/g, "$1|").split("|")

这里唯一的问题是此RegEx假定句子以大写字母开头,但情况并非总是如此。

更具体地说,我将句子定义为:

  • 以字母(无论是否大写),数字甚至是符号(例如$或€)开头。
  • 以标点符号结尾,例如“。”,“?”或“!”。

但是,如果一个句子包含一个数字,而该数字本身包含一个“。”或一个“,”,则该句子应被视为一个句子而不是两个句子。

最后但并非最不重要的一点,我们可以假设除了第一个句子之外,一个句子前面都有一个空格。

给出一个随机字符串,如何计算javascript(或Cof​​feeScript)包含的句子数?

答案

一个解决您问题的正则表达式是:

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计算字符串中的句子数的主要内容,如果未能解决你的问题,请参考以下文章

每个单词中的字符数

LeetCode2114. 句子中的最多单词数(C++)

LeetCode2114. 句子中的最多单词数(C++)

计算包含来自其他列表Python的单词的句子数[关闭]

LeetCode 2047. 句子中的有效单词数

从Go中的给定字符串计算句子中的最大单词