2

我有一个字符串“我爱 A。我讨厌 B ”。如果我使用拆分它

 string.split("\\p{Punct}") 

我会得到两个字符串,string1分别是“我爱 A ”和string2我讨厌 B ”。请注意,代替“ . ”,我还可以使用任何其他标点符号。如何使用正确的标点符号恢复拆分操作之前的确切字符串。

4

3 回答 3

6

保留对字符串的引用 - 如果你有任何 punct,你就无法猜到你以前有什么

于 2013-02-26T16:10:57.153 回答
3

如果您使用以下正则表达式进行拆分(使用零宽度后视断言):

(?<=\p{Punct})

它实际上不会消耗标点符号,而只是检查分割点之前是否有标点符号。结果,标点符号留在了最终的字符串中:

String s = "I love A. I hate B.";
String res[] = s.split("(?<=\\p{Punct})");
System.out.println(Arrays.toString(res));

结果:

[I love A.,  I hate B.]

现在您可以将数组的元素重新连接在一起以恢复原始字符串。

演示:http: //ideone.com/0umjkZ

于 2013-02-26T16:17:19.083 回答
0

您可以使用 StringTokenizer 并使用 nextElement() 方法管理元素。

样本。

String str = "I love A. I hate B";

StringTokenizer st = new StringTokenizer(str,".");

String beforeElement;
String otherElement;

while (st.hasMoreElements()){

    beforeElement=st.nextElement();

     if(st.hasMoreElements()){

       otherElement=st.nextElement();

    }

}
于 2013-02-26T16:28:08.163 回答