1

メソッドに問題がありsplitます。私はこの正規表現を持っています:

String regex = "[\s|\,]+";

そして、私はこれらの2つの文字列を持っています:

String s1 = "19/2009 , 34.40";

String s2 = ",19/2009 , 34.40";   // this is the same string wiht "," in the start

正規表現を 2 つの文字列に適用します。

String r1[] = s1.split(regex);  
String r2[] = s2.split(regex);

最初のケースではr1[0]="19/2009"r1[1]="34.40"、これは正しい結果です。しかし、2 番目のケースではr2[0]=""r2[1]="19/2009"とが得られr2[2]="34.40"ます。これは間違っています。空の文字列を除いて、2 番目の文字列は最初の文字列と同じ結果になるはずです。そのために何を変える必要がありますか?

4

3 に答える 3

2

,正規表現として指定したので,、文字列を2つに分割,19/2009 し、文字列を2つの部分に分割します。最初の部分はの前,にありますが、これはそうではありません""。2番目の部分であるは19/2009r2[1]あり、3番目の部分は別のによって分離されて,にありr2[2]=34.40ます。すべてが正しく機能しています。

于 2012-05-23T18:18:34.400 に答える
1

Apache Commons の StringUtilsを使用して...

String r2[] = StringUtils.strip(s2, ", ").split(regex);
于 2012-05-23T19:04:58.487 に答える
0

正規表現をそのままにして、これを行います

List<String> list = new ArrayList<String>(Arrays.asList(splitArray));
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
    if (iterator.next().isEmpty()) { // remove empty indexes
        iterator.remove();
    }
}

少し長くなりますがList、配列よりもはるかに優れた出力が得られます。

于 2012-05-23T19:05:00.097 に答える