Как я могу заменить \ на / в Java? - PullRequest
3 голосов
/ 28 декабря 2010

Я попытался использовать следующее регулярное выражение, но оно не сработало.

myString.replaceAll ("\", "/");

Исключение:

java.util.regex.PatternSyntaxException: непредвиденная внутренняя ошибка рядом с индексом 1 \ ^ в java.util.regex.Pattern.error (неизвестный источник) в java.util.regex.Pattern.compile (неизвестно)Источник) на java.util.regex.Pattern. (Неизвестный источник) на java.util.regex.Pattern.compile (неизвестный источник) на java.lang.String.replaceAll (неизвестный источник)

Ответы [ 2 ]

7 голосов
/ 28 декабря 2010

Ваш код даже не должен компилироваться.

"\" экранирует ", поэтому строка продолжается.Запись String h = "\"hello\""; делает строку h содержащей "hello".

Если мы изменим его и изменим на "\\" (без обратной косой черты), мы столкнемся с другой проблемой.Затем регулярное выражение пытается экранировать символ следующий .Например, запись "\\d+" является допустимым регулярным выражением (совпадающими цифрами).


В вашем случае, однако, вам вообще не нужны регулярные выражения.Просто используйте метод replace(char, char) для строки, он заменяет все символов.

myString.replace('\\', '/');

Кстати, если вы заменяете пути, вы должны посмотреть на File.separator чтобы получить системы символ-разделитель пути .

3 голосов
/ 28 декабря 2010

Иногда вам нужно 4 слеша, потому что обратный слеш также является escape-символом для регулярных выражений.Попробуйте

myString.replaceAll("\\\\", "/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...