2017-11-17 3 views
-1

私は、次のコードを実行した場合:のJavaのstring.Splitは最後の文字を無視することは、分割は、最後の文字に基づいてされているのはなぜ

"testx".split("x") 

期待は、我々は{"test", ""}を取得しますが、代わりにJavaが戻っているということですが{"test"}

しかし、"xtest".split("x"){"", "test"}を返します。なぜその奇妙な(または)私の行動が間違っているのですか?ここで

私のJDK &システム情報です:

JRE:1.8.0_152-リリース-1024-B6 AMD64

JVM:OpenJDKの64ビットサーバーVM JetBrainsのsro社によって

のLinux 4.4.0-34-ジェネリック

答えて

2

String.splitドキュメントから:

このメソッドは、 の指定された式とlimit引数が0の2つの引数のsplitメソッドを呼び出すかのように機能します。 したがって、末尾の空の 文字列は結果の配列に含まれません。

あなたは末尾の空の文字列を保持したいなら、あなたはこのようString.split(String, int)を使用することができます。

String str = "testx"; 
String[] values = str.split("x", -1); 

出力:

{"test", ""} 
+0

をJavaのない強制的に取得する方法はあります最後の空の結果を無視する? –

+0

@Kalinga引用されたドキュメントをもう一度読んで、_ "限界引数のために0以外の値で2つの引数の分割メソッドを呼び出すとどうなるでしょうか?"(または[そのメソッド] (https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-int-))。 –

+1

'str.split(" x "、-1)' –

関連する問題