2014-04-01 89 views
0
String data = line.split(":")[1]; 

String location = data.split("|")[0]; 
String type = data.split("|")[1]; 

System.out.println("D: " + type); 
int x = Integer.parseInt(location.split("-")[0]); 
int y = Integer.parseInt(location.split("-")[1]); 

int t = Integer.parseInt(type); 

輸入到此解析器中的原始字符串的格式類似於「DATA:3,3 | 1」。我試圖將其解析爲「DATA:xy | t」的格式。問題是字符串location與字符串data分離時爲空。爲什麼?字符串在分割時變成空白

回答

8

因爲split()需要一個正則表達式作爲參數,而|實際上是一個正則表達式特殊字符(也是一個語法上有效的正則表達式,它解釋了沒有錯誤被拋出)。

您需要轉義它:split("\\|")split("[|]")

0

正如sp00m說,你可以使用:

split("\\|")split("[|]")

或者你可以使用

split(Pattern.quote("|")); 

預先測試,如果字符串中包含的字符,只是使用

字符串#包括()

if (string.contains("\\|")) { 
    // Split it. 
} 
else { 
    throw new IllegalArgumentException("String " + string + " does not contain |"); 
}