2

私のコードは次のとおりです。

String s = "1;;;; 23;;";
System.out.println(s.split(";").length);

そして出力として与えます5。のソースコードsplitは次のとおりです。

public String[] split(String regex) {
        return split(regex, 0);
    }

そしてドキュメントは言う:

このメソッドは、指定された式とゼロの制限引数を使用して2つの引数のsplit(java.lang.String、int)メソッドを呼び出すかのように機能します。したがって、末尾の空の文字列は結果の配列に含まれません。

たとえば、文字列 "boo:and:foo"は、次の式で次の結果を生成します。

Regex Result
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }

私が持っている文字列を印刷する場合:

1



 23

私はこの1;;;; 23;;ようなものから得るべきではありません{"1", "", "", "", " 23", ""}か?

4

3 に答える 3

8

いいえ、引用されたドキュメントに記載されているように、5つは正しいです。

したがって、末尾の空の文字列は結果の配列に含まれません。

これが、配列の最後にある空の文字列が省略される理由です。空の文字列が必要な場合は、Evgeniy Dorofeevの回答にあるように実行し、-1の制限を指定します。

于 2012-12-27T15:12:59.520 に答える
2

limit = 0 なので、末尾の空の文字列は含まれません。試す

System.out.println(s.split(";", -1).length);

そしてあなたは7を得るでしょう

于 2012-12-27T15:16:46.793 に答える
0

「;」の場合はいつでも文字列を分割します 提示して配列に入れます。

于 2012-12-27T15:17:12.757 に答える