2014-03-01 84 views
4

我遇到了java string.split方法的問題。|在java中沒有識別string.split()方法

我有一個像這樣的字符串字,它等於freshness|originality。然後我分裂這個字符串像這樣:

String words[] = word.split("|"); 

如果我再輸出字[1],就像這樣:

t1.setText(words[1]); 

它給我的值f。我已經確定這是在freshness這個詞中的f。

如何正確拆分字符串以使字[1]實際上是originality?謝謝您的幫助!

回答

9

你應該逃避它:

String words[] = word.split("\\|"); 

入住這說明在類似的問題在這裏:Why does String.split need pipe delimiter to be escaped?

String對象的split()方法有一個正則表達式作爲參數。這意味着未轉義的|不被解釋爲字符,而是解釋爲OR,意思是「空字符串或空字符串」。

2

你需要逃避角色。使用"\\|"

有關正則表達式轉義字符的更多信息here

+3

它給了我一個錯誤,說它是一個無效的轉義序列 – James

+1

@James Yeah,我忘了加反斜槓。現在應該是好的。 – AntonH

+1

對不起,它確實工作! – James

3

您需要轉義管道,因爲java將其識別爲正則表達式或運算符。

line.split("\\|") 

"|"被解析爲「空字符串或空字符串,」這是不是你正在努力尋找。

正常備案

...? 。 + ^: - $ *

都是正則表達式運算符,需要轉義。

0
 String test ="freshness|originality"; 
     String[] splits = test.split("\\|"); 
     String part1 = splits[0]; // freshness 
     String part2 = splits[1]; // originality