例えば
String splits[] = ("||").split("[|]")
System.out.println(splits.length)
0を返します。2を返すことを期待していましたが、この問題を解決するための最良の方法は何ですか?
例えば
String splits[] = ("||").split("[|]")
System.out.println(splits.length)
0を返します。2を返すことを期待していましたが、この問題を解決するための最良の方法は何ですか?
のデフォルトの操作split()
は、末尾の空の文字列を破棄することです。結果の文字列はすべて空であるため、文字列は返されません。
より正確には、呼び出しは、2番目のパラメーターを0に設定してsplit(String)
呼び出すことと同じです。split(String, int)
そして0は(私の強調)を意味します:
...パターンは可能な限り何度も適用され、配列は任意の長さにすることができ、末尾の空の文字列は破棄されます。
空の文字列の末尾を保持したい場合(および要素の数を制限したくない場合)、負の値を渡します(-1をお勧めします)。
String splits[] = "||".split("\\|", -1);
区切り文字で終わる文字列でsplitが呼び出されると、終了する区切り文字は破棄されます。
たとえば、これらはすべて同じです。
"X|Y|Z|||".split([|]).length
"X|Y|Z||".split([|]).length
"X|Y|Z|".split([|]).length
"X|Y|Z".split([|]).length
_は正規表現のメタ文字である|
ため、角かっこで囲んでいることに注意してください。|