Подтвердить что ты не робот

Строка заменит обратную косую черту

Как я могу выполнить замену строки обратной косой черты.

Строка источника входного сигнала:

sSource = "http://www.example.com\/value";

В приведенной выше строке я хочу заменить "\/" на "/";

Ожидаемый выход после замены:

sSource = "http://www.example.com/value";

Я получаю Source String от третьей стороны, поэтому у меня есть контроль над форматом String.

Это то, что я пробовал

Пробный 1:

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

Exception Неожиданная внутренняя ошибка рядом с индексом 1 \

Испытание 2:

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

Нет исключений, но не требует замены. Ничего не делает.

Испытание 3:

 sVideoURL.replace("\\", "/"); 

Нет исключений, но не требует замены. Ничего не делает.

4b9b3361

Ответ 1

sSource = sSource.replace("\\/", "/");
  • String является неизменным - каждый метод, который вы вызываете на него, не меняет его состояние. Вместо этого он возвращает новый экземпляр, содержащий новое состояние. Таким образом, вы должны назначить новое значение переменной (это может быть одна и та же переменная)
  • replaceAll(..) используется регулярное выражение. Вам это не нужно.

Ответ 2

Попробуйте replaceAll("\\\\", "") или replaceAll("\\\\/", "/").

Проблема заключается в том, что обратная косая черта - это (1) escape-chararacter в Java-Strings и (2) Escape-Character в регулярных выражениях - для каждого из них требуется удвоение символа, по сути нуждающегося в 4 \ в строке.


Изменить: Конечно, как сказал Божо, вам нужно что-то сделать с результатом (назначьте его какой-то переменной), а не выбросить. И в этом случае вариант с не регулярным выражением лучше.

Ответ 3

Try

   sSource = sSource.replaceAll("\\\\", "");

Edit: Ok даже в stackoverflow есть обратная косая черта... У вас должно быть четыре обратных слэша в аргументе replaceAll firstString...

Причина этого заключается в том, что обратная косая черта рассматривается как escape-символ для специальных символов (например,\n, например).
Кроме того, replaceAll first arg является регулярным выражением, которое также использует обратную косую черту как escape-последовательность.
Поэтому для регулярного выражения вам нужно пройти 2 обратную косую черту. Чтобы передать эти две обратные косые черты с помощью строки java на replaceAll, вам также нужно избежать обеих обратных косых черт.
Это заставляет вас иметь четыре обратных косая черта для вашего выражения! Что красота регулярного выражения в java;)

Ответ 4

s.replaceAll ("\\\\", "");

Вам нужно замаскировать обратную косую черту в вашем источнике, а для регулярного выражения вам нужно снова замаскировать его, поэтому для каждой обратной косой черты вам нужно два, которые заканчиваются на 4.

Но

s = "http://www.example.com\\/value";

также нужны две обратные косые черты в источнике.

Ответ 5

Это заменит обратную косую черту косой чертой в строке:

source = source.replace('\\','/');

Ответ 6

вам нужно сделать

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

потому что обратная шишка должна быть дважды экранирована для строки в исходном тексте в регулярном выражении

Ответ 7

 sSource = StringUtils.replace(sSource, "\\/", "/")

Ответ 8

Заменить обратную косую черту в определенном месте:

if ((stringValue.contains("\\"))&&(stringValue.indexOf("\\", location-1)==(location-1))) {
    stringValue=stringValue.substring(0,location-1);
}