2012-09-11 178 views
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中沒有找到匹配。有任何想法嗎?

+0

對我來說,錯誤似乎是在逃避backshalshes。 else regex'([\ d] +);([^ \\ |] +)'似乎很好。 – harshit

+1

爲什麼不使用'String.split'代替你自己的解決方案? –

+0

@KARASZIIstván我正要發佈。在|上分割隨後分裂; – BunjiquoBianco

回答

2

方法matches()嘗試匹配正則表達式與完整字符串。這顯然不符合。

find()會找到下一個匹配的子字符串。

2

爲什麼不使用String.split而不是編寫自己的解決方案?

像:

final String[] entries = valueString.split("\\|"); 
for (String entry : entries) { 
    final String[] fields = entry.split(";", 2); 
} 
+0

我試過,但由於某種原因,它分割了字符串中的每個字符。當我用\\ |逃脫它時它工作得很好:) – Slickelito

+0

@Slickelito是的,你說得對。我需要逃避'|'。 –

+0

沒有逃脫它尋找什麼也沒有(因爲拆分需要一個正則表達式的參數),這奇怪地匹配一切。 – BunjiquoBianco

相關問題