我有一句话, 你好,你在做什么?你好吗? 我想用 .,? 等字符分割句子。 我已经使用 split 函数实现了它 输出为:
arr[0]=hello
arr[1]=What you are doing
arr[2]=How are you
但我希望数组为
arr[0]=hello
arr[1]=,
arr[2]=What you are doing
arr[3]=?
arr[4]=How are you
arr[5]=?
我已经完成了这段代码
String text = "hello, What you are doing?How are you?";
String[] arr= text.split("[\\.,!;?:\"]+");
for (String str : arr) {
System.out.println(str);
}
请帮忙。
最佳答案
保留文本同时分割文本的一般策略是使用环视。环视断言逻辑,但实际上不使用任何文本。它们基本上是零宽度。我使用以下模式进行了拆分:
(?=[\\.,!;?:\"])|(?<=[\\.,!;?:\"])
这表示如果我们向前查找或向后查找并看到标点符号,则进行拆分。
String sentence = "hello, What you are doing?How are you?";
String[] parts = sentence.split("(?=[\\.,!;?:\"])|(?<=[\\.,!;?:\"])");
for (String part : parts) {
System.out.println(part);
}
hello
,
What you are doing
?
How are you
?
Demo
您可能还想对每个术语运行 String#trim
以获得所需的准确输出。
关于android:用标点符号分割字符串并用数组中的句子维护标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208686/