105

split()その方法について助けが必要です。私は次のものを持っていますString

String values = "0|0|0|1|||0|1|0|||";

値を配列に入れる必要があります。"0"、"1"、および "" の 3 つの可能な文字列があります。

私の問題は、私が使用しようとするときsplit()です:

String[] array = values.split("\\|"); 

私の値は最後の0までしか保存されません。「|||」の部分のようです トリミングされます。私は何を間違っていますか?

ありがとう

4

4 に答える 4

149

この動作は明示的に文書化されていますString.split(String regex)(強調鉱山):

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

末尾の空の文字列を含める場合は、2 番目のパラメーター ( )String.split(String regex, int limit)に負の値を指定して使用する必要があります。limit

String[] array = values.split("\\|", -1);
于 2013-01-19T13:00:21.170 に答える
26

これを試して

String[] array = values.split("\\|",-1); 
于 2013-01-19T13:00:47.287 に答える
13

次の例を検討してください。

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

于 2014-10-03T15:14:25.963 に答える
1

これは予期されることです。についてはJavadocを参照してくださいsplit

Splits this string around matches of the given regular expression.

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

于 2013-01-19T12:58:28.283 に答える