簡體   English   中英

將函數拆分為包含“ +”字符的字符串

[英]Split function to a String containing a '+' character

在拆分方法中,如果我僅傳遞“ +”字符,例如:

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)

但是,如果我將split調用替換為:

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

它工作正常。

請問這是什么原因嗎?

split方法將“ +”視為正則表達式,因此+基本上是正則表達式中的運算符。 如果使用“ \\\\ +”,則將其作為字符。

供參考,請在這里檢查

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#split(java.lang.String

Java中的String.split方法采用正則表達式作為輸入。 如您的錯誤消息所述,“ +”字符是一個元字符。 特別是,它表示“ +”之前的模式將重復1次或更多次。 當然,當您真正表示的是'+'字符而不是重復模式的meta字符時,可以用反斜杠轉義'+',這就是s1.split(“ \\ +”)起作用的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM