假设我有这段代码:
String x = "Hello ++ World!";
if(x.contains(" ++ "))
System.out.println(x.split(" ++ ")[0]);为什么当我执行这段代码时,我会收到输出:
Hello ++ World!而不是Hello这显然与split()有关,然而,我无法弄清楚。
发布于 2019-05-03 14:15:19
String::split方法使用Regex进行拆分。表达式" ++ "是Regex,+字符有一个特殊的含义。从文件中:
将此字符串拆分为与给定正则表达式匹配的字符串。
你必须转义这些字符:
System.out.println(x.split(" \\+\\+ ")[0]);发布于 2019-05-03 14:15:44
因为++被解释为正则表达式。你得用反斜杠逃离它。试试这个:
System.out.println(x.split(" \\+\\+ ")[0]);
发布于 2019-05-03 14:17:17
Split方法使用regexp作为参数,您应该转义像+这样的特殊字符。试一试如下:
String x = "Hello ++ World!";
if(x.contains(" ++ "))
System.out.println(x.split("\\s\\+\\+\\s")[0]);https://stackoverflow.com/questions/55971570
复制相似问题