我一直试图在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中找不到匹配项。有任何想法吗?
答案 0 :(得分:2)
方法matches()
尝试将正则表达式与完整字符串进行匹配。这显然不匹配。
find()
将找到下一个匹配的子字符串。
答案 1 :(得分:2)
为什么不使用String.split
而不是编写自己的解决方案?
像:
final String[] entries = valueString.split("\\|");
for (String entry : entries) {
final String[] fields = entry.split(";", 2);
}
答案 2 :(得分:0)
我已经尝试了你的例子,它只会在Regx
的末尾添加。* Log.i("MainActivity ", "Matches " + valueString.matches("([\\d]+);([^\\|]+).*"));
以上行返回true
http://developer.android.com/reference/java/lang/String.html#matches(java.lang.String)
在上述功能中描述