2

「私はAが好きです。私はBが嫌いです」という文字列があります。を使用して分割した場合

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

string1I love A」とstring2I嫌いB 」の2つの文字列を取得します。「 . 」の代わりに、他の句読点を使用することもできます。正しい句読点文字を使用して分割操作を行う前の正確な文字列を復元するにはどうすればよいですか。

4

3 に答える 3

6

文字列への参照を保持します - 点があれば、以前に何を持っていたかを推測することはできません

于 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 に答える