Ответ очень прост.
Если вы хотите, чтобы ваша Java программа содержит Яву строкового литерала, содержащую последовательность символов «\», «1», «2», «3», вы MUST написать как "...\\123..."
в исходном коде ,
Например:
String testInput = "one/two/three\\123today";
int pos = test.indexOf("\\123");
Однако, обратный слеш Экранирование только отношение к Java строки (или символ) литералов в вашем исходном коде. Если ваша программа читает строку из какого-либо файла (например), или если она каким-то образом собирает строку, которая не включает строковые или символьные литералы, в исходном файле не требуется экранирование или что-то еще. Например:
char backslash = (char) 92;
String testInput = "one/two/three" + backslash + "123today";
int pos = test.indexOf(backslash + "123");
или
String input = ... // read a file that contains the sequence '\', '1', '2', '3'
int pos = test.indexOf("\\123"); // search for that sequence
(За исключением:. Некоторые языки программирования предоставляют альтернативный строковые литералы синтаксиса, которые означают, что вы можете обойтись без побега Java не конец истории.).
Здесь \ 2 рассматривается как восьмеричный побег затмения.
Для записи это спецификация языка Java, которая определяет это. Eclipse - это (правильно) реализация Java Language Specification.
Как заменить \ 1 на \\ 1 ?, заменить не работает, не преобразует его в массив символов. –
Вы изменяете строковый литерал в исходном файле. Если я правильно читаю вопрос, проблема в том, что строка содержит символ '' \ 123'', является синтаксисом. –
Да, я пробовал это. Строка '\\' не может быть найдена, так как '\ 1' рассматривается как объект. –