2012-01-03 48 views

回答

3

考慮使用的Java提供的拆分方法

String str = "5|[email protected]|477|en|87477"; 
String[] data = str.split("\\|"); 
for(String s : data){ 
    System.out.println(s); 
} 

輸出我得到的是

5 
[email protected] 
477 
en 
87477 

由於它只是一個字符串數組,只要你想,你訪問的數據,即[1 ]給出了[email protected]

+0

相比StringTokenizer的是這種方法更好?如果沒有數據,即2個連續的管道,是否需要注意? – Mike 2012-01-03 01:08:28

+0

Alan,如果字符串末尾有空標記,例如「5 | [email protected] | 477 | zh |||| 87477 || x |||」,這將無法按預期工作。 – Rahul 2012-01-03 01:23:58

+0

另一個答案提供了在最後處理空標記的建議。在中間,它會按預期工作。與StringTokenizer相比,它更簡單。 – yshavit 2012-01-03 01:29:52

0

考慮使用StringTokenizer類。

1

我upvoted String.split答案,因爲它是最簡單的。它的兩個缺點是:

  1. 使用正則表達式而不是隻發現一個字符;爲推廣
  2. 一些額外的開銷,必須每次

爲了獲得小幅增長重新編譯的正則表達式,如果你需要它,你可以預編譯的圖案,然後用它來駁:

import java.util.regex.Pattern; 
private static final Pattern BAR_REGEX = Pattern.compile(Pattern.quote("|")); 

,然後在你的方法:

String[] splits = BAR_REGEX.split(inputString); 
1

艾倫的解決方案將工作多數時間,除非最後有空的標記。例如,

String str =「5 | [email protected] | 477 | zh |||| 87477 || x |||」; AA @ gmail的|

您可以通過

  • 採用分體式的另一種變體與限制負值,(見javadoc

字符串str =「5解決這個問題.COM | 477 | EN |||| 87477 || X |||「;

str。split(「\\ |」,-1);

  • 或使用commons.StringUtils.splitPreserveAllTokens(STR,DELIM)