split()
メソッドについて助けが必要です。私はString
を持っています:
String values = "0|0|0|1|||0|1|0|||";
値を配列に入れる必要があります。 3つの可能な文字列があります: "0"、 "1"、および ""
私の問題は、私がsplit()
を使用しようとしたときです。
String[] array = values.split("\\|");
私の値は最後の0まで保存されます。 "|||"の部分のようですトリミングされます。何が悪いの?
ありがとう
この振る舞いは String.split(String regex)
(強調しているところ)に明示的に文書化されています。
このメソッドは、与えられた式とlimit引数にゼロを指定して2引数のsplitメソッドを呼び出すのと同じように機能します。末尾の空の文字列は、結果として得られる配列にが含まれないです。
末尾の空の文字列を含める場合は、2番目のパラメータ(limit
)に負の値を指定して String.split(String regex, int limit)
を使用する必要があります。
String[] array = values.split("\\|", -1);
これを試して
String[] array = values.split("\\|",-1);
この例を考えてください。
public class StringSplit {
public static void main(String args[]) throws Exception{
String testString = "Real|How|To|||";
System.out.println
(Java.util.Arrays.toString(testString.split("\\|")));
// output : [Real, How, To]
}
}
結果には、 "|"の間に空の文字列は含まれません。セパレータ空の文字列を保持するには
public class StringSplit {
public static void main(String args[]) throws Exception{
String testString = "Real|How|To|||";
System.out.println
(Java.util.Arrays.toString(testString.split("\\|", -1)));
// output : [Real, How, To, , , ]
}
}
詳細については、このWebサイトを参照してください。 http://www.rgagnon.com/javadetails/Java-0438.html
これは予想通りです。 split
については Javadocs を参照してください。
Splits this string around matches of the given regular expression.
このメソッドは、2つの引数を持つsplit(Java.lang.String、int)メソッドを、指定された式とlimit引数にゼロを指定して呼び出すのと同じように機能します。 したがって、末尾の空文字列は結果の配列に含まれません。