これが私の文字列です:
var str = "This is my \string";
これは私のコードです:
var replaced = str.replace("/\\/", "\\\\");
出力を次のように取得できません:
"This is my \\string"
正規表現と置換値について考えられるすべての組み合わせを試しました。
どんな助けでも大歓迎です!
これが私の文字列です:
var str = "This is my \string";
これは私のコードです:
var replaced = str.replace("/\\/", "\\\\");
出力を次のように取得できません:
"This is my \\string"
正規表現と置換値について考えられるすべての組み合わせを試しました。
どんな助けでも大歓迎です!
文字列には円記号は含まれていません\s
。エスケープシーケンスが含まれています。
var str = "This is my \\string";
また、正規表現が必要な場合は、文字列ではなく正規表現を使用する必要があります。
var replaced = str.replace(/\\/, "\\\\");
問題は、最初の行の\が認識されないことです。バックスラッシュはエスケープシーケンスをマークすると考えられますが、\ sはエスケープ文字ではないため、無視されます。var strは、「これは私の文字列です」と解釈されます。試してくださいstr.indexOf("\\")
-バックスラッシュがまったくないため、-1であることがわかります。strの内容を制御する場合は、Davidの言うことを実行します。最初の\をエスケープするには、別の\を追加します。
複数のインスタンスまたはバックスラッシュがある場合:
str.split(String.fromCharCode(92)).join(String.fromCharCode(92,92))
これを使って
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'
私はこれを試していませんが、次のように動作するはずです
var replaced = str.replace((new RegExp("\s"),"\\s");
基本的に、"\" を置換するのではなく、"\s" エスケープ シーケンスで表される文字を置換します。
残念ながら、すべてのベースをカバーするために、アルファベットのすべての文字、すべての数字、記号などに対してこれを行う必要があります