在“上拆分Java字符串”+&引用;符号给出了一个错误

在“上拆分Java字符串”+&引用;符号给出了一个错误,java,regex,string,split,patternsyntaxexception,Java,Regex,String,Split,Patternsyntaxexception,我目前正在编写一个java程序,其子任务之一是获取一个字符串并在某个位置拆分它。下面是我的一段代码: public class Driver { public static void main(String[] args) { String str = "a+d"; String[] strparts = str.split("+"); for (String item : strparts) {

我目前正在编写一个java程序,其子任务之一是获取一个字符串并在某个位置拆分它。下面是我的一段代码:

public class Driver
{
    public static void main(String[] args)
    {
        String str = "a+d";
        String[] strparts = str.split("+");
        for (String item : strparts)
        {
            System.out.println(item);
        }
    }
}
我期待着结果:

a
d
然而,令我惊讶的是,我得到了:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+
^

    at java.util.regex.Pattern.error(Pattern.java:1955)
    at java.util.regex.Pattern.sequence(Pattern.java:2123)
    at java.util.regex.Pattern.expr(Pattern.java:1996)
    at java.util.regex.Pattern.compile(Pattern.java:1696)
    at java.util.regex.Pattern.<init>(Pattern.java:1351)
    at java.util.regex.Pattern.compile(Pattern.java:1028)
    at java.lang.String.split(String.java:2367)
    at java.lang.String.split(String.java:2409)
    at Test.Driver.main(Driver.java:8)
线程“main”java.util.regex.PatternSyntaxException中的异常:在索引0附近悬空元字符“+” + ^ 位于java.util.regex.Pattern.error(Pattern.java:1955) 位于java.util.regex.Pattern.sequence(Pattern.java:2123) 位于java.util.regex.Pattern.expr(Pattern.java:1996) 位于java.util.regex.Pattern.compile(Pattern.java:1696) Pattern.(Pattern.java:1351) 位于java.util.regex.Pattern.compile(Pattern.java:1028) 位于java.lang.String.split(String.java:2367) 位于java.lang.String.split(String.java:2409) 位于Test.Driver.main(Driver.java:8) 发生了什么事?

谢谢

+
是正则表达式中的一个特殊元字符,它将前一个字符重复一次或多次。您需要将其转义以匹配文本
+

String[] strparts = str.split("\\+");

符号+是正则表达式的一部分,需要以反斜杠作为前缀

String[] strparts = str.split("\\+");
在文字Java字符串中,反斜杠是转义字符。文本字符串
“\\”
是一个反斜杠。在正则表达式中,反斜杠也是转义字符

由于+是正则表达式中使用的一个符号,作为Java字符串,它被写成
“\\+”

,我们可以从以下内容中看到:

公共字符串[]拆分(字符串正则表达式)

将此字符串围绕给定的匹配项拆分

因此,这里需要一个正则表达式

    String[] strparts = str.split("\\+");

还可以为字符串创建返回类型方法。如果您想要实现其他字符串操作方法,这将使它变得更容易

public static void main(String[] args) {
    String plainString  = toArray("a+b");
}
public static String[] toArray(String s) {
    String myArray[] = s.split("\\+");
    return myArray[];
}

OP注意:或者你可以把这个字符放在一个字符类
[+]
中,这也会带走字符的特殊含义。是的,但是这太多了