末尾の空の文字列はデフォルトで破棄されるという Alnitak の指摘は正しいです。
末尾に空の文字列が必要な場合split(String, int)
は、パラメーターとして負の数を使用して渡す必要がありlimit
ます。
パラメータはlimit
、パターンが適用される回数を制御するため、結果の配列の長さに影響します。制限nが 0 より大きい場合、パターンは最大n - 1 回適用され、配列の長さはnを超えず、配列の最後のエントリには、最後に一致した区切り文字を超えるすべての入力が含まれます。nが正でない場合
、パターンは可能な限り何度でも適用され、配列は任意の長さにすることができます。nがゼロの場合、パターンは可能な限り何度でも適用され、配列の長さは任意であり、末尾の空の文字列は破棄されます。
split(aString)
は の同義語であることに注意してくださいsplit(aString, 0)
。
split
このメソッドは、指定された式とゼロの制限引数を使用して 2 つの引数のメソッドを呼び出すかのように機能します。したがって、後続の空の文字列は、結果の配列には含まれません。
また、ループを使用して配列から値を取得する必要があります。これにより、可能性が回避されますArrayIndexOutOfBoundsException
。
したがって、修正されたコードは次のようになります(末尾の空の文字列が必要であると仮定します)。
String sample = "::";
String[] splitTime = sample.split(":", -1);
for (int i = 0; i < splitTime.length; i++) {
System.out.println("Value " + i + " : \"" + splitTime[i] + "\"");
}
出力:
値 0 : ""
値 1 : ""
値 2 : ""