2014-12-04 49 views
-4
String[] parts = pptValue.split("{"); 

在我pptValue非法重複

pptValue = EnvWDI{env}{client}

我的錯誤:

Caught: java.util.regex.PatternSyntaxException: Illegal repetition 
{ 
java.util.regex.PatternSyntaxException: Illegal repetition 
{ 
    at java_lang_String$split.call(Unknown Source) 

THX。

+0

問題是什麼? – 2014-12-04 15:11:52

+1

這是一個正則表達式的分割,就像文檔狀態一樣。 – 2014-12-04 15:12:05

+1

「\\ {」轉義「{」 – javaHunter 2014-12-04 15:12:25

回答

2

我想你需要擺脫大括號,如"\\{"

查看Pattern的文檔,有關轉義字符的部分。在窗簾後面,split使用Pattern

1

你需要逃避{,因爲它是用來量化的重複,嘗試:

public static void main(String[] args) {   
    String pptValue = "foo{bar"; 
    String[] parts = pptValue.split("\\{"); 
    System.out.println(parts.length); 
    for (int i = 0; i < parts.length; i++){ 
     System.out.println(parts[i]); 
    } 
} 
+0

這應該是雙反斜槓:) – 2014-12-04 15:12:38

+1

@GiovanniBotta當然,糾正。我只是從頭上踢了一下,沒有測試。 – orique 2014-12-04 15:13:33

3

字符{正則表達式使用時具有特殊的意義。

將傳遞給String.split的字符串解析爲正則表達式,並且必須轉義具有特殊含義的字符,例如, "\\{"

反斜槓字符用於轉義特殊字符。由於\本身在字符串中有特殊的含義,所以它也必須被轉義,因此是雙反斜槓。