2012-07-09 59 views
0

我有一個這樣的字符串:分割字符串在java中

06%2F27%2F2012%2C07%2F05%2F2012%2C06%2F29%2F2012%2C07%2F05%2F2012%2C07%2F06%2F2012%2C07%2F19%2F2012%2C07%2F06%2F2012%2C07%2F19%2F2012%2C07%2F05%2F2012%2C07%2F05%2F2012%2C07%2F20%2F2012%2C07%2F20%2F2012%2C07%2F27%2F2012%2C08%2F02%2F2012%2C07%2F20%2F2012%2C07%2F26%2F2012%2C08%2F03%2F2012%2C08%2F06%2F2012%2C08%2F06%2F2012%2C08%2F17%2F2012 

我想它拆分它值是這樣的:

%2F should be/

%2C marks the starting of new string 

所以值將是這樣的:

6月27日/ 2012,07/052012等

我試圖爲此創建一些正則表達式,但沒有成功。

例子我想:

String phrase = "06%2F27%2F2012%2C07%2F05%2F2012%2C06%2F29%2F2012%2C07%2F05%2F2012%2C07%2F06%2F2012%2C07%2F19%2F2012%2C07%2F06%2F2012%2C07%2F19%2F2012%2C07%2F05%2F2012%2C07%2F05%2F2012%2C07%2F20%2F2012%2C07%2F20%2F2012%2C07%2F27%2F2012%2C08%2F02%2F2012%2C07%2F20%2F2012%2C07%2F26%2F2012%2C08%2F03%2F2012%2C08%2F06%2F2012%2C08%2F06%2F2012%2C08%2F17%2F2012"; 
String delims = "REGEX_GOES_HERE"; 
String[] tokens = phrase.split(delims); 
+3

我覺得你應該先UNESCAPE數據,然後處理它。 – nhahtdh 2012-07-09 12:09:00

+2

請包括您實際使用的正則表達式。 – user1329572 2012-07-09 12:09:40

回答

3

這應做到:

String string = "06%2F27%2F2012%2C07%2F05%2F2012%2C06%2F29%2F2012"; // etc... 
    String decoded = null; 
    try { 
     decoded = URLDecoder.decode(string, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
    String[] splitString = decoded.split(","); 
    for (String i : splitString) { 
     System.out.println(i); 
    } 
2

你的麻煩是字符集,則必須對其進行解碼。

8

如果我理解正確,那麼您嘗試拆分並用一個操作進行替換。別。

如果您接受,那麼您所需要的只是一個URLDecoder調用,該調用將用適當的字符替換%..序列,然後使用帶字符串定界符的簡單split()

0

一個偷懶的辦法是你需要的值替換所有的字符串:

String toModify = "06%2F27%2F2012%2C07%2F05%2F2012%2C06%2F29%2F2012%2C07%2F05%2F2012%2C07%2F06%2F2012%2C07%2F19%2F2012%2C07%2F06%2F2012%2C07%2F19%2F2012%2C07%2F05%2F2012%2C07%2F05%2F2012%2C07%2F20%2F2012%2C07%2F20%2F2012%2C07%2F27%2F2012%2C08%2F02%2F2012%2C07%2F20%2F2012%2C07%2F26%2F2012%2C08%2F03%2F2012%2C08%2F06%2F2012%2C08%2F06%2F2012%2C08%2F17%2F2012" 
String my result = toModify.replaceAll("%2F","/").replaceAll("%2C"," ").replaceAll.... ; 
2
String[] tokens = phrase.replaceAll("%2F","/").split("%2C");