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

该方法matches()尝试将正则表达式与完整的字符串进行匹配。这显然不匹配。

find()将找到下一个匹配的子字符串。

于 2012-09-11T10:07:37.793 回答
2

为什么不使用String.split而不是编写自己的解决方案?

喜欢:

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

我试过你的例子,它只会在你的 Regx 末尾添加 .*

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

以上行返回真

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

在上面的函数中描述

于 2012-09-11T10:17:23.803 回答