java - 如何将文本拆分为 2 个不同的句子,然后在 Java 中计算每个句子的单词
问题描述
示例我有这句话“你好,我的名字是佩德罗。我想去巴黎。我要去买票”
我想将文本分成几个句子出现点,然后告诉哪个句子有更多的单词
我想出了这个来计算单词,但我不知道如何将它分成不同的句子来计算它
public static int countWordsUsingSplit(String parrafo) {
if (parrafo == null || parrafo.isEmpty()) {
return 0;
}
String[] words = parrafo.split("\\.?!");
return words.length;
}
解决方案
您可以只使用流 api 和一些正则表达式魔术:
String msg = "Hello, my name is Pedro. I want to go to Paris? I'm going to buy the ticket! ";
Optional<String> result = Arrays.stream(msg.split("(\\. )|(! )|(\\? )"))
.max((sentence1, sentence2) -> sentence1.length() < sentence2.length() ? -1 : 1);
我对正则表达式不太擅长,这意味着这可能会得到改进。此方法不会计算“.”、“!”、“?”字符。您可以自定义正则表达式以满足您的需求。如果您想要最小的句子,只需将“<”替换为“>”。这是一个用于创建正则表达式的惊人网站。
推荐阅读
- r - 考试成绩处理
- c# - 将随机数输入到没有重复的二维数组中
- powershell - 在Powershell中按第二个元素对文本进行排序
- php - 适用于 Windows 的 PHP 中串行类的 readPort 函数
- c# - C# Web api 每分钟获取请求
- python - 如何将数据框列列表值转换为元素
- flutter - Flutter:为什么两个 const SizedBox() 不相同
- android - 如何使用谷歌地图颤振获取指定地点的位置?
- android - TimerTask & Timer 运行多次
- html - 使用 Django 模板从 base.html 继承的导航栏无法正确呈现样式