android:用标点符号分割字符串并用数组中的句子维护标点符号

标签 android split

我有一句话, 你好,你在做什么?你好吗? 我想用 .,? 等字符分割句子。 我已经使用 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/

相关文章:

c# - 使用正则表达式分割嵌套参数

c# - 有没有办法将 C# 泛型字典拆分成多个字典?

java - android-Altbeacons 路径错误

android - 构建错误 : Ice cream sandwich emulator on Ubuntu

android - 软件按钮高度

python - 将列表拆分为子列表中的 n 个项目,并添加剩余部分

JavaFX TextArea 包含 String.split() 的空行?

android - XML 错误 : error: not well-formed (invalid token) in splash screen (React Native)

android - 月份名称作为字符串

python - 将键对值插入嵌套字典中,而不在键分隔符后覆盖,从而产生重复键