2

例:

String s = ":a:b:c:";
s.split(":");
// Output: [, a, b, c]

Java Doc から:

The array returned by this method contains each substring of this string that is terminated by another substring that matches the given expression or is terminated by the end of the string.

最後の空の文字列がないのに、最初の空の文字列が考慮されるのはなぜですか? 最初の空の文字列は ":" で終わり、最後の空の文字列は文字列の終わりで終わります。したがって、両方をリストする必要があります。

4

4 に答える 4

6

を指定しない場合limitsplitメソッドは末尾の空の一致を返しません。Javadoc を引用するには:

指定された正規表現の一致に基づいてこの文字列を分割します。このメソッドは、指定された式とゼロの制限引数を使用して 2 引数の split メソッドを呼び出すかのように機能します。したがって、後続の空の文字列は、結果の配列には含まれません。

の 2 パラメータ バージョンを使用する場合split、負の制限を渡すと、返される配列のサイズは制限されません。末尾の空の文字列が得られます。

n が正でない場合、パターンは可能な限り何度でも適用され、配列は任意の長さにすることができます。

limitここで、Javadocs が言うときに参照していると思いますn

于 2013-05-06T17:04:14.680 に答える
2

javadoc で定義されているとおりに動作します。末尾の空の文字列も取得するには、2 つの引数を取る別の分割メソッドを使用できます。

s.split(":", -1);
// Output: [, a, b, c, ]
于 2013-05-06T17:05:52.393 に答える
0

このメソッド では、末尾の空の文字列は破棄されます。ここから詳細なアイデアを得ることができます

于 2013-05-06T17:09:23.307 に答える