0

Androidで正規表現を使用して文字列を分割しようとしましたが、成功しませんでした。

文字列は次のようにフォーマットされますid;value| 例えば ​​:

String valueString = "20;somevalue|4;anothervalue|10;athirdvalue|5;enoughwithvaluesalready";

このメソッドを使用して、文字列を分割してみます。

public void splitString(String valueString){
    Pattern p = Pattern.compile("([\\d]+);([^\\|]+)");
    Matcher m = p.matcher(valueString);  
    boolean matches = m.matches();
}

Rubular-regex-editorで実行すると問題ないように見えますが、Androidでは一致するものが見つかりません。何か案は?

4

3 に答える 3

2

String.split独自のソリューションを作成する代わりに使用してみませんか?

好き:

final String[] entries = valueString.split("\\|");
for (String entry : entries) {
  final String[] fields = entry.split(";", 2);
}
于 2012-09-11T10:17:33.510 に答える
2

このメソッドmatches()は、正規表現を完全な文字列と照合しようとします。そして、これは明らかに一致しません。

find()次に一致する部分文字列が見つかります。

于 2012-09-11T10:07:37.793 に答える
0

私はあなたの例を試しました、それはあなたの正規表現の最後に。*を追加するだけで機能します

    Log.i("MainActivity ", "Matches " + valueString.matches("([\\d]+);([^\\|]+).*"));

上記の行はtrueを返します

http://developer.android.com/reference/java/lang/String.html#matches(java.lang.String

上記の機能で説明する

于 2012-09-11T10:17:23.803 に答える