我已經包含由管級聯數據的字符串(|)處理由管道分隔的記錄的有效方法?
實施例:5|[email protected]|477|en|87477
該字符串具有〜15個字段由管連接在一起。
這可能是可能的,一些領域可能有空數據: 例子:5|[email protected]||en|87477
我怎樣才能最有效地獲得在Java 1.6的所有單個字段?
謝謝!
我已經包含由管級聯數據的字符串(|)處理由管道分隔的記錄的有效方法?
實施例:5|[email protected]|477|en|87477
該字符串具有〜15個字段由管連接在一起。
這可能是可能的,一些領域可能有空數據: 例子:5|[email protected]||en|87477
我怎樣才能最有效地獲得在Java 1.6的所有單個字段?
謝謝!
考慮使用的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]
考慮使用StringTokenizer
類。
我upvoted String.split
答案,因爲它是最簡單的。它的兩個缺點是:
爲了獲得小幅增長重新編譯的正則表達式,如果你需要它,你可以預編譯的圖案,然後用它來駁:
import java.util.regex.Pattern;
private static final Pattern BAR_REGEX = Pattern.compile(Pattern.quote("|"));
,然後在你的方法:
String[] splits = BAR_REGEX.split(inputString);
您也可以考慮從的StringUtils類10。速度非常快,確實處理'缺少'令牌。
艾倫的解決方案將工作多數時間,除非最後有空的標記。例如,
String str =「5 | [email protected] | 477 | zh |||| 87477 || x |||」; AA @ gmail的|
您可以通過
字符串str =「5解決這個問題.COM | 477 | EN |||| 87477 || X |||「;
str。split(「\\ |」,-1);
相比StringTokenizer的是這種方法更好?如果沒有數據,即2個連續的管道,是否需要注意? – Mike 2012-01-03 01:08:28
Alan,如果字符串末尾有空標記,例如「5 | [email protected] | 477 | zh |||| 87477 || x |||」,這將無法按預期工作。 – Rahul 2012-01-03 01:23:58
另一個答案提供了在最後處理空標記的建議。在中間,它會按預期工作。與StringTokenizer相比,它更簡單。 – yshavit 2012-01-03 01:29:52