5

次の出力が理にかなっている理由がわかりません。

長さ 1 の文字列の配列を返す、空の文字列に対する文字列分割メソッド

String[] split = "".split(",");
System.out.println(split.length);
長さ 1 の文字列の配列を返します

String[] split = "Java".split(",");
System.out.println(split.length);
長さ 1 の文字列の配列を返します

見分け方は??

4

4 に答える 4

10

ドキュメントから:

このメソッドによって返される配列には、指定された式に一致する別の部分文字列で終了するか、文字列の末尾で終了する、この文字列の各部分文字列が含まれます。

あなたの質問に答えるために、期待されることを行います。返された部分文字列は、入力文字列の最後で終了します (,見つからなかったため)。ドキュメントには次のようにも記載されています。

式が入力のどの部分とも一致しない場合、結果の配列には 1 つの要素、つまりこの文字列のみが含まれます。

これは最初のステートメントの結果であることに注意してください。検索文字列が見つからなかった場合に Java 開発者が追加した追加の状況ではありません。

于 2012-08-27T20:21:50.663 に答える
2

これも打ちました。返されるのは、分割文字を含まないまでの文字列です。文字列を取得したくない場合は、StringTokenizer を使用します。

StringTokenizer st = new StringTokenizer(someString,',');
int numberOfSubstrings = st.countTokens();
于 2012-08-27T20:21:39.903 に答える
1

分割する , がないため、元の文字列 (この場合は空の文字列) を返します。

于 2012-08-27T20:21:08.050 に答える
0

1 つの要素 (空の文字列) を含む分割配列のサイズを測定しているため、1 が返されます。

于 2012-08-27T20:23:00.607 に答える