.split()包含字符“ ++”的字符串

时间:2019-05-03 14:12:51

标签: java regex split

假设我有以下代码块:

String x = "Hello ++ World!";
if(x.contains(" ++ "))
    System.out.println(x.split(" ++ ")[0]);

为什么在执行此代码时收到输出:

  • Hello ++ World!而不是Hello

它显然与split()有关,但是,我无法弄清楚。

3 个答案:

答案 0 :(得分:8)

方法String::split使用正则表达式进行拆分。 您的表达式" ++ "是一个正则表达式,而+字符具有特殊含义。从文档中:

  

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

您必须转义这些字符:

System.out.println(x.split(" \\+\\+ ")[0]);

答案 1 :(得分:0)

因为"[NONE]"被解释为正则表达式。您需要使用反斜杠将其转义。试试这个:

NOTHING

答案 2 :(得分:-1)

Split方法使用正则表达式作为参数,您应转义诸如+之类的特殊字符。尝试类似的东西:

    String x = "Hello ++ World!";
    if(x.contains(" ++ "))
        System.out.println(x.split("\\s\\+\\+\\s")[0]);