Split ( "\\" ) и ошибка

String str = "\u0054\u0068\u0069\u006e\u006b\u0050\u0061\u0064";

String[] strArray = str.split("\\"); 

но эта ошибка возникла.

Исключение в потоке "main" java.util.regex.PatternSyntaxException: Неожиданная внутренняя ошибка рядом с индексом 1

Ответ 1

он должен быть

String[] strArray = str.split("\\\\");

причина в том, что в Regex, \ имеет особое значение, поэтому вам нужно убежать в \\.

и в java, \\ должен быть равен \\\\

Ответ 2

String.split(String regex) метод принимает как параметр a RegEx.

RegEX для \ - \\\\

Try

String[] strArray = str.split("\\\\");

Причина использования "\\\\",

Regex для \ есть \\

Теперь \\ рассматривается как \ применяет логику escape-символа (\n= новая строка, \\= \)

Итак, чтобы иметь "\\", мы используем "\\\\"

Надеюсь, что это не смущает..: D

Ответ 3

Это не имеет большого смысла. Ваша исходная строка использует символы 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);
}