2014-08-28 183 views
3

我想分割字符的字符串^,但它不起作用。我有以下代碼:java分割不能正常工作^

String numberBase10 = "3.52*10^2"; 
String[] vector = numberBase10.split("^"); 
System.out.println("numberBase10: " + numberBase10); 
System.out.println("Vector[0]: " vector[0]); 

我得到以下輸出:

numberBase10: 3.52*10^2 
Vector[0]: 3.52*10^2 

如果我嘗試訪問矢量[1]我得到的錯誤IndexOutOfArray。

我必須把任何轉義字符,以便分裂與^

感謝

+0

可能重複http://stackoverflow.com/questions/3853726/java-regular-expressions-and:整個概念可以在一個不錯的靜態方法來打包-dollar-sign) – ControlAltDel 2014-08-28 20:33:17

+0

[Java中的split()方法在點(。)]上不起作用的可能重複(http://stackoverflow.com/questions/7935858/the-split-method-in-java-不 - 不工作的,一個點) – Raedwald 2014-09-03 07:12:59

回答

8

您需要\\^逃脫它。

^本身就是一個特殊字符,意思是否定(在一個組中,例如[^ abc],它與除abc以外的任何內容匹配)或者行首的錨點。

8

split需要正則表達式。 ^是用於字符串的開頭的正則表達式所以需要轉義

String[] vector = numberBase10.split("\\^"); 
1

^是一個特殊的字符作爲正則表達式匹配一個錨,你需要逃避它 - 如果我改變,

String[] vector = numberBase10.split("\\^"); 

然後我得到

Vector[0]: 3.52*10 

沒有其他代碼更改。

2

java字符串處理分裂法對正則表達式進行操作,和「^」是一個正則表達式錨字符,因此必須進行轉義把它當作一個普通字符:

String[] vector = numberBase10.split("\\^"); 
1

由於split()方法預期正則表達式,如果你想在一個確切的字符串分割,而不必擔心它可能包含任何正則表達式的特殊字符,你應該先用

String regex = java.util.regex.Pattern.quote("^");

上再拆轉義。

public static String[] splitRaw(String input, String separator) { 
    String regex = java.util.regex.Pattern.quote(separator); 
    return input.split(regex); 
} 
[Java正則表達式和美元符號(的