2

我目前正在编写一个 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)

这是怎么回事?
谢谢!

4

4 回答 4

7

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

String[] strparts = str.split("\\+");
于 2014-10-24T02:52:31.163 回答
1

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

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

在文字 Java 字符串中,反斜杠是转义字符。文字字符串"\\"是单个反斜杠。在正则表达式中,反斜杠也是转义字符。

由于 + 是正则表达式中使用的符号,因此作为 Java 字符串,它被写为"\\+".

于 2014-10-24T03:23:17.420 回答
0

正如我们从Java pai中看到的:

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

围绕给定正则表达式的匹配拆分此字符串。

所以,这里需要一个正则表达式。

    String[] strparts = str.split("\\+");
于 2014-10-24T04:19:54.043 回答
0

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

public static void main(String[] args) {
    String plainString  = toArray("a+b");
}
public static String[] toArray(String s) {
    String myArray[] = s.split("\\+");
    return myArray[];
}
于 2014-10-24T07:30:51.867 回答