我有一个字符串“我爱A.我讨厌B ”。如果我使用
拆分它 string.split("\\p{Punct}")
我会得到两个字符串string1
将是“我爱A ”而string2
将是“我讨厌B ”。请注意,我可能还有其他任何标点字符,而不是“。”。如何使用正确的标点符号恢复分割操作之前的确切字符串。
答案 0 :(得分:6)
保持对字符串的引用 - 如果你有任何标点,你就无法猜出你之前有什么
答案 1 :(得分:3)
如果使用以下正则表达式进行拆分(使用zero-width look-behind assertion):
(?<=\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.]
现在,您可以将数组的元素连接在一起以恢复原始字符串。
答案 2 :(得分: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();
}
}