2

こんにちは、文中の引用符内のドットを正規表現に置き換える方法のようなことをしています

var string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. "Vestibulum interdum dolor nec sapien blandit a suscipit arcu fermentum. Nullam lacinia ipsum vitae enim consequat iaculis quis in augue. Phasellus fermentum congue blandit. Donec laoreet, ipsum et vestibulum vulputate, risus augue commodo nisi, vel hendrerit sem justo sed mauris." Phasellus ut nunc neque, id varius nunc. In enim lectus, blandit et dictum at, molestie in nunc. Vivamus eu ligula sed augue pretium tincidunt sit amet ac nisl. "Morbi eu elit diam, sed tristique nunc."';

// seperate the quotes
var quotes = string.match(/"(.)+?"/g);
var test = [];

// for each quotes
for (var i = quotes.length - 1; i >= 0; i--) {

    // replace all the dot inside the quote
    test[i] = quotes[i].replace(/\./g, '[dot]');
};

console.log(test);

すでに正規表現で変更を行っているとしましょうvar stringが、結果が. var testまたはより良い方法がありますか?

出力は次のようになります

Lorem ipsum dolor sit amet, consectetur adipiscing elit. "Vestibulum interdum dolor nec sapien blandit a suscipit arcu fermentum[dot]Nullam lacinia ipsum vitae enim consequat iaculis quis in augue[dot] Phasellus fermentum congue blandit[dot] Donec laoreet, ipsum et vestibulum vulputate, risus augue commodo nisi, vel hendrerit sem justo sed mauris[dot]" Phasellus ut nunc neque, id varius nunc. enim lectus では、blandit et dictum at で、nunc で molestie です。Vivamus eu ligula sed augue pretium tincidunt sit amet ac nisl. "Morbi eu elit diam, sed tristique nunc[dot]"

* ps タイトルが正しいかどうかわかりません

ありがとう

4

2 に答える 2

2

代わりに、で分割し"、2 つおきの配列要素で置換を行ってから、再度結合することもできます。

var parts = string.split('"');
for (var i = 1; i < parts.length; i += 2) {
    parts[i] = parts [i].replace(/\./g, '[dot]');
};
string = parts.join('"');

文字列がこれで始まる場合、splitインデックスに空の文字列が作成されるため、すべての場合に機能するはずです。0"

末尾の不一致のエッジ ケースでは、"その後のすべてのドット"も置換されることに注意してください。これを望まない場合は、単にfor条件を に変更してi < parts.length - 1ください。

JSFiddleデモ

于 2012-10-30T14:13:49.953 に答える
1

正規表現を使用しますが、置換機能を使用します。

string.replace(/"[^"]+"/g, function(m) {return m.replace(/\./g,"[dot]")})
于 2012-10-30T14:35:07.857 に答える