2012-11-09 51 views
0
Str = "abc|def|ghi^jkl|mno"; 
String[] Flds = Str.split("[|]"); 
//Flds[0] = "abc"; 
//Flds[1] = "def"; 
//Flds[2] = "ghi^jkl"; 
//Flds[3] = "mno"; 

現在我想知道FLDS子域[2],但沒有下面的工作是 -的Java string.split功能

String[] Flds = Str.split("[^]"); 

String[] Flds = Str.split("[^]]"); 

String[] Flds = Str.split("^"); 
+0

埃姆,你正試圖再次分裂海峽,不FLDS [2] –

回答

5

你應該分裂Flds[2]

String[] subFlds2 = Flds[2].split("\\^"); 

另外,^regular expressions中的保留字符。您使用[]轉義|,但是,^也意味着[]括號內的內容。

+1

+1爲了更準確'[]'和' ^'放置爲第一個字符是[Negative Character Class](http://www.regular-expressions.info/charclass.html#negated),例如'[^ bc]'表示除'b'或'c'之外的每個字符。 – Pshemo

1

雙逃逸克拉:

Flds[2].split("\\^") 

一個逃生的Java,然後又爲regex

0

請注意:String#split,接受這是正則表達式的參數:

public String[] split(String regex) 

^是在正則表達式的特殊字符,這意味着該行的開頭。要將其作爲文字使用,請在它之前使用轉義字符,例如如下:

String[] Flds = Str.split("[\\^]"); 

另外我覺得,它應該工作正常,沒有括號,例如,

String[] Flds = Str.split("\\^"); 

您可能會發現更多的有關正則表達式字符類在這裏:Regex Char Classes