Замена Javascript и обратной косой черты
вот моя строка:
var str = "This is my \string";
Это мой код:
var replaced = str.replace("/\\/", "\\\\");
Я не могу получить свой вывод:
"This is my \\string"
Я пробовал каждую комбинацию, которую я могу придумать для регулярного выражения и значения замены.
Любая помощь приветствуется!
Ответы
Ответ 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))