首页 > 解决方案 > 如何将文本拆分为 2 个不同的句子,然后在 Java 中计算每个句子的单词

问题描述

示例我有这句话“你好,我的名字是佩德罗。我想去巴黎。我要去买票”

我想将文本分成几个句子出现点,然后告诉哪个句子有更多的单词

我想出了这个来计算单词,但我不知道如何将它分成不同的句子来计算它

public static int countWordsUsingSplit(String parrafo) {

         if (parrafo == null || parrafo.isEmpty()) {
             return 0;
         }
         String[] words = parrafo.split("\\.?!");
         return words.length;

     }

标签: java

解决方案


您可以只使用流 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);

我对正则表达式不太擅长,这意味着这可能会得到改进。此方法不会计算“.”、“!”、“?”字符。您可以自定义正则表达式以满足您的需求。如果您想要最小的句子,只需将“<”替换为“>”。是一个用于创建正则表达式的惊人网站。


推荐阅读