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

ltd*_*938 2 java regex split

假设我有以下代码块:

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

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

  • Hello ++ World!代替Hello

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

Nik*_*las 8

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

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

您必须转义这些字符:

System.out.println(x.split(" \\+\\+ ")[0]);
Run Code Online (Sandbox Code Playgroud)

  • 使用上面推荐的类似Thomas的Pattern.quote更好。 (5认同)