拆分(“\\”)和错误
String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064"; String[] strArray = str.split("\\");
但是这个错误发生了。
线程“main”中的exceptionjava.util.regex.PatternSyntaxException:索引1附近的意外内部错误
它应该是
String[] strArray = str.split("\\\\");
原因是因为在Regex
, \
具有特殊含义所以你需要将其转义为\\
。
在java中, \\
应该等于"\\\\"
String.split(String regex)
方法将RegEx
作为参数。
RegEX for \
is \\\\
尝试
String[] strArray = str.split("\\\\");
我们使用"\\\\"
原因,
正则表达式\
是\\
现在\\
被视为\
应用转义字符逻辑( \n
=新行, \\
= \
)
所以要"\\"
我们使用"\\\\"
希望它不要混淆..:D
这没有多大意义。 您的原始字符串使用unicode字符,等于ThinkPad
。 所以无论如何都没有删除斜线。
换句话说,下面的代码打印ThinkPad
两次:
public static void main(String args[]) { String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064"; System.out.println(str); String[] strArray = str.split("\\\\"); System.out.println(Arrays.toString(strArray)); }
甚至更清楚,下面的代码打印为true:
public static void main(String args[]) { String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064"; String str2 = "ThinkPad"; System.out.println(str == str2); }
关于转义的一般解决方案: http : //commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html
String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064"; String[] strArray = str.split(StringEscapeUtils.escapeJava("\\"));