假设我有以下代码块:
String x = "Hello ++ World!";
if(x.contains(" ++ "))
System.out.println(x.split(" ++ ")[0]);
为什么在执行此代码时收到输出:
Hello ++ World!
而不是Hello
?它显然与split()
有关,但是,我无法弄清楚。
答案 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]);