gpt4 book ai didi

text - 如何重新格式化段落以使每个句子单独一行?

转载 作者:行者123 更新时间:2023-12-02 01:22:13 24 4
gpt4 key购买 nike

输入:

Hi. I am John.
My name is John. Who are you ?

输出:

Hi
I am John
My name is John
Who are you

最佳答案

    String line = "Hi. My name is John. Who are you ?";
String[] sentences = line.split("(?<=[.!?])\\s+");
for (String sentence : sentences) {
System.out.println("[" + sentence + "]");
}

这会产生:

[Hi.]
[My name is John.]
[Who are you ?]

另见


如果您不习惯使用 split (尽管它是“遗留” java.util.StringTokenizer 的推荐替代品),您可以只使用 java.util.Scanner (这足以完成这项工作)。

另见

这是一个使用 Scanner 的解决方案, 顺便说一句 implements Iterator<String> .为了获得额外的指导值(value),我还展示了一个使用 java.lang.Iterable<T> 的示例这样您就可以使用 for-each 结构。

    final String text =
"Hi. I am John.\n" +
"My name is John. Who are you ?";

Iterable<String> sentences = new Iterable<String>() {
@Override public Iterator<String> iterator() {
return new Scanner(text).useDelimiter("\\s*[.!?]\\s*");
}
};

for (String sentence : sentences) {
System.out.println("[" + sentence + "]");
}

这打印:

[Hi]
[I am John]
[My name is John]
[Who are you]

如果这个正则表达式仍然不是您想要的,那么我建议您花时间自学,这样您就可以自己解决问题。

另见


注意:final局部变量的修饰符 text在上面的片段中是必要的。在一个说明性示例中,它使代码简洁,但在您的实际代码中,您应该将匿名类重构为它自己的命名类,并将其取为 text。在构造函数中。

另见

关于text - 如何重新格式化段落以使每个句子单独一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2742930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com