2012-12-12 40 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

相关问题