String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04|2013-08-08 12:58:08|ANSWER";
我想用|
。我有java.When我用串分流工作不正常給人錯誤的結果
System.out.println(text.split("|").length);
上面的字符串分割字符串,我得到的結果82這裏可能是錯誤的。
String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04|2013-08-08 12:58:08|ANSWER";
我想用|
。我有java.When我用串分流工作不正常給人錯誤的結果
System.out.println(text.split("|").length);
上面的字符串分割字符串,我得到的結果82這裏可能是錯誤的。
String#split使用正則表達式作爲它的參數。管道字符|
具有特殊含義(意思是「或」),以防止字符串在每個字面值|
處被內部分割。
應該逃脫
text.split("\\|").length
否則完整String
將確定長度
謝謝你這是工作 – PSR
+1這是一個非常有趣的方式來解決這個問題。直到我讀這篇文章,我才知道。做得好。 –
你忘了轉義字符時,可以使用,
text.split("\\\|");
String.split(String)
使用正則表達式,並|
在正則表達式中有特殊的含義。
選項:
我個人會選擇後一種方法 - 我不會這實際上是一個String.split
使用正則表達式的設計缺陷,而且在調用代碼時還不清楚。
如果你真的想使用String.split
,我肯定會用Pattern.quote
要清楚任何人閱讀代碼爲什麼你逃避它 - 只要使用"\\|"
不是很自我記錄,IMO 。
我喜歡看到添加一個String.split(char seperator)方法來迎合這個相當常見的場景。上帝知道實施會很簡單。我記得在一個很長很醜的ANSI-C代碼行中看到了這一點。男人在哪裏,男人在哪裏,蟲子是多餘的。 – corlettk
public class Sstring {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04 |2013-08-08 12:58:08|ANSWER";
System.out.println(text.split("\\|").length);
String str[] = text.split("\\|");
for(String i:str){
System.out.println(i);
}
}
}
番石榴,像往常一樣!
Splitter.on("|").split("your_text")
這將返回一個Iterable。
你期待什麼結果? –
我期待6 – PSR