JavaScript и замена обратных косых черт

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

var str = "This is my \string";

Это - мой код:

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

Я не могу заставить свой вывод быть:

"This is my \\string"

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

Любая справка ценится!

36
задан Frankie 19 March 2010 в 17:27
поделиться

3 ответа

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

9
ответ дан 27 November 2019 в 05:30
поделиться

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

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

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

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

0
ответ дан 27 November 2019 в 05:30
поделиться

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

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

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

var replaced = str.replace(/\\/, "\\\\");
34
ответ дан 27 November 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: