String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064";
String[] strArray = str.split("\\");
ancak bu hata oluştu. İplik "ana" java.util.regex.PatternSyntaxException içindebölünmüş ("\") ve hata
İstisna: endeksi 1
String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064";
String[] strArray = str.split("\\");
ancak bu hata oluştu. İplik "ana" java.util.regex.PatternSyntaxException içindebölünmüş ("\") ve hata
İstisna: endeksi 1
yakın Beklenmedik dahili hata o
String[] strArray = str.split("\\\\");
nedeni olmalıdır yüzden Regex
nedeniyle, \
'un özel bir anlamı vardır, bu yüzden \\
'a aktarmanız gerekir.
ve Java
,\\
eşit
String.split(String regex)
\\\\
yöntem parametresi bir RegEx
olarak almak gerekir. \
için
Regex \\\\
biz "\\\\"
kullanmamın nedeni
String[] strArray = str.split("\\\\");
Nedeni, \
için
Regex Şimdi \\
\
olarak kabul edilir \\
kaçış charact uygulamak olduğunu deneyin olduğunu
Yani"\\"
olması er mantığı (
\n
= Yeni hat, =
\
\\
) biz
"\\\\"
onun kafa karıştırıcı değil Umut kullanın ..: D
ve ben de teşekkür ederim – evilYoung
çok mantıklı değil o. Orijinal dizeniz unicode karakterleri kullanır ve ThinkPad
'a eşittir. Yani zaten kaldırmak için eğik çizgi yoktur. Başka bir deyişle
, kod aşağıda iki kez ThinkPad
yazdırır:
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));
}
Hatta daha net, kod aşağıda doğrudur yazdırır:
public static void main(String args[]) {
String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064";
String str2 = "ThinkPad";
System.out.println(str == str2);
}
genel çözüm için kaçan hakkında: 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("\\"));
anladı. çok teşekkür ederim – evilYoung
Orijinal dizede eğik çizgi yok. – assylias
@assylias evet Orijinal dizede eğik çizgi yok. Ancak, işaret edilen istisna geçersiz normalden dolayıdır. –