0

単語contentの後の指定された文字列内の二重の円記号"\\"を、単一の円記号\だけに置き換えるにはどうすればよいですか?

var a = "blah blah \\ \\ content:\"whiskey \\\\";

次のように表示されます。

var a = "blah blah \\ \\ content:\"whiskey \\";

私は次のことを試みましたが成功しませんでした。

 a.replace(/content:*\\\\\"/g, "\\"));
4

3 に答える 3

3

正規表現で問題全体に取り組むのではなく、「コンテンツ」の文字列を壊して、右半分を置き換えます。

function fn(x) { 
    var i = x.indexOf("content");
    return x.substr(0,i) + x.substr(i).replace(/\\\\/g, "\\");
}

// this evaluates true
fn("blah blah \\ \\ \\\\ content:\"whiskey \\\\\\\\ \\\\") ==
   "blah blah \\ \\ \\\\ content:\"whiskey \\\\ \\"
于 2012-11-24T04:31:25.480 に答える
1
a.replace(/(content:.*)\\\\/g, "$1\\");

特に問題は"、正規表現にが.*含まれていることです。何かを一致させる必要があります。また、後で取得できるように、最初の部分の周りにグループを配置する必要があります。

残念ながら、javascriptのマッチング方法のため、すべての置換が完了するまで、これを複数回実行する必要があります。

于 2012-11-24T04:09:45.717 に答える
0

置換方法なしでこれを使用してみてください!

a.split('\\\\').join('\\');

そして、結果は次のようになります。

blah blah \ \ content:"whiskey \
于 2012-11-24T04:38:32.230 に答える