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

Замена Javascript и обратной косой черты

вот моя строка:

var str = "This is my \string";

Это мой код:

var replaced = str.replace("/\\/", "\\\\");

Я не могу получить свой вывод:

"This is my \\string"

Я пробовал каждую комбинацию, которую я могу придумать для регулярного выражения и значения замены.

Любая помощь приветствуется!

4b9b3361

Ответ 1

Строка не содержит обратную косую черту, она содержит escape-последовательность \s.

var str = "This is my \\string";

И если вы хотите регулярное выражение, вы должны иметь регулярное выражение, а не строку.

var replaced = str.replace(/\\/, "\\\\");

Ответ 2

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

Сделайте это..

var replaced = str.replace(String.fromCharCode(92),String.fromCharCode(92,92));

Ответ 3

Проблема в том, что\в вашей первой строке даже не распознается. Он думает, что обратная косая черта будет отмечать escape-последовательность, но \s не является escape-символом, поэтому он игнорируется. Ваш var str интерпретируется как "Это моя строка". Попробуйте str.indexOf("\\") - вы найдете его -1, так как обратная косая черта вообще отсутствует. Если вы контролируете содержание str, сделайте то, что говорит Дэвид, добавьте еще один, чтобы избежать первого.

Ответ 4

Используйте этот

str.replace(/(\s)/g,function($0){return $0==' '?' ':'\\s'})

или

str.replace(/ /g,'something').replace(/\s/g,'\\s').replace(/something/g,' ');

"что-то", это может быть комбинация символов, которая не находится в строке

var str=' \s';  
  str.replace(/\s/g,'\\s'); 
// return '\\s\\s'   
  str.replace(/ /g,'SpAcE').replace(/\s/g,'\\s').replace(/SpAcE/g,' ');
// return ' \\s' 

Ответ 5

Я не пробовал это, но следующее должно работать

var replaced = str.replace((new RegExp("\s"),"\\s");

По существу, вы не хотите заменять "\", вы хотите заменить символ, представленный escape-последовательностью "\ s".

К сожалению, вам нужно будет сделать это для каждой буквы алфавита, каждого номера, символа и т.д., чтобы охватить все базы

Ответ 6

Если у вас несколько экземпляров или обратная косая черта:

str.split(String.fromCharCode(92)).join(String.fromCharCode(92,92))