String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064";
String[] strArray = str.split("\\");
但是发生了这个错误。
线程“main”中的异常java.util.regex.PatternSyntaxException:索引1附近的意外内部错误
答案 0 :(得分:20)
应该是
String[] strArray = str.split("\\\\");
原因是因为在Regex
中,\
具有特殊含义,因此您需要将其转义为\\
。
在java中,\\
应该等于"\\\\"
答案 1 :(得分:3)
String.split(String regex)
方法将参数设为RegEx
。
\
的RegEX为\\\\
尝试
String[] strArray = str.split("\\\\");
我们使用"\\\\"
,
\
的正则表达式为\\
现在\\
被视为\
应用转义字符逻辑(\n
=新行,\\
= \
)
为了让"\\"
我们使用"\\\\"
希望它不会混淆..:D
答案 2 :(得分:0)
这没有多大意义。您的原始字符串使用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);
}
答案 3 :(得分:0)
关于转义的一般解决方案: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("\\"));