2012-12-12 61 views
-1

在分離方法,如果我只傳遞「+」字符這樣的:Split函數字符串包含一個「+」字符

public class StringSplit { 

    public static void main(String[] str) { 
     String s1 = "test+plus"; 
     String[] stArr = s1.split("+"); 
     System.out.println(stArr.length); 
     for (int i = 0; i < stArr.length; i++) { 
      System.out.println(stArr[i]); 
     } 
    } 
} 

以下錯誤即將:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 
+ 
^ 
    at java.util.regex.Pattern.error(Pattern.java:1713) 
    at java.util.regex.Pattern.sequence(Pattern.java:1878) 
    at java.util.regex.Pattern.expr(Pattern.java:1752) 
    at java.util.regex.Pattern.compile(Pattern.java:1460) 
    at java.util.regex.Pattern.<init>(Pattern.java:1133) 
    at java.util.regex.Pattern.compile(Pattern.java:823) 
    at java.lang.String.split(String.java:2292) 
    at java.lang.String.split(String.java:2334) 
    at StringSplit.main(StringSplit.java:5) 

但是,如果我用以下代碼拆分呼叫:

String[] stArr = s1.split("\\+"); 

它工作正常。

行爲是這樣的嗎?

+1

因爲文檔說明它是這樣的。 – 2012-12-12 06:24:23

回答

7

split方法將「+」視爲正則表達式,所以+基本上是正則表達式中的運算符。如果您使用「\\ +」,那麼它將其作爲字符。

爲了參考請here

+2

+1由於反斜槓也是一個特殊字符,所以它會是'「\\ +」'。 – Thilo

相關問題