「私はAが好きです。私はBが嫌いです」という文字列があります。を使用して分割した場合
string.split("\\p{Punct}")
string1
「I love A」とstring2
「I嫌いB 」の2つの文字列を取得します。「 . 」の代わりに、他の句読点を使用することもできます。正しい句読点文字を使用して分割操作を行う前の正確な文字列を復元するにはどうすればよいですか。
文字列への参照を保持します - 点があれば、以前に何を持っていたかを推測することはできません
次の正規表現を使用して分割した場合 (ゼロ幅の後読みアサーションを使用):
(?<=\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.]
これで、配列の要素を連結して元の文字列に戻すことができます。
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();
}
}