2

例えば

String splits[] = ("||").split("[|]") 

System.out.println(splits.length) 0を返します。2を返すことを期待していましたが、この問題を解決するための最良の方法は何ですか?

4

2 に答える 2

6

のデフォルトの操作split()は、末尾の空の文字列を破棄することです。結果の文字列はすべて空であるため、文字列は返されません。

より正確には、呼び出しは、2番目のパラメーターを0に設定してsplit(String)呼び出すことと同じです。split(String, int)

そして0は(私の強調)を意味します:

...パターンは可能な限り何度も適用され、配列は任意の長さにすることができ、末尾の空の文字列は破棄されます。

空の文字列の末尾を保持したい場合(および要素の数を制限したくない場合)、負の値を渡します(-1をお勧めします)。

String splits[] = "||".split("\\|", -1);
于 2012-06-06T06:02:41.450 に答える
0

区切り文字で終わる文字列でsplitが呼び出されると、終了する区切り文字は破棄されます。

たとえば、これらはすべて同じです。

"X|Y|Z|||".split([|]).length
"X|Y|Z||".split([|]).length
"X|Y|Z|".split([|]).length
"X|Y|Z".split([|]).length

_は正規表現のメタ文字である|ため、角かっこで囲んでいることに注意してください。|

于 2012-06-06T06:05:20.340 に答える