0

XML ファイル内に不完全な文字列があります: summary="The name is "Rambo"."

"出力が次のようになるように、内側の引用符を正規表現を使用して置き換えたいと思います。

summary="その名は&quotランボー&quotです。"

4

4 に答える 4

1

これはうまくいくはずです、相棒!

var outer = '"The name is "Rambo"."';
var inner = outer.replace(/^"|"$/g, '');
var final = '"' + inner.replace(/"/g, '"') + '"';
// (string) => "The name is "Rambo"."

編集:これを少しショートカットすることもできますが、JavaScript は正規表現の後読みをサポートしていないため、非対称です。

var str = '"The name is "Rambo"."';
var final = '"' + str.substr(1).replace(/"(?!$)/g, '"');
// (string) => "The name is "Rambo"."

編集2:これを使用str.sliceすると、さらに簡単になるようです!

var str = '"The name is "Rambo"."';
var final = '"' + str.slice(1, -1).replace(/"/g, '"') + '"';
// (string) => "The name is "Rambo"."
于 2013-07-17T21:09:32.317 に答える
0

このスクリプトは、属性内のすべての間違った引用符を修正する必要があります。

var faultyXML = '<example summary="The name is "Rambo"."/>',
    xmlString = faultyXML.replace(
        /([^"=<>\s]+)="(.+?)"(?=\s+[^"=<>\s]+="|\s*\/?>)/g,
        function(match, name, value) {
            return name+'"'+value.replace(/"/g, "&quot;")+'"';
        }
    );

正規表現は複雑に見えますが、そうではありません:-)

([^"=<>\s]+)     # group matching the attribute name. Simpler: (\w+)
="               # begin of value
(.+?)            # least number of any chars before…
"(?=             # a quote followed by
 \s+[^"=<>\s]+=" # whitespace, attribute name, equals sign and quote
 |               # or
 \s*\/?>         # the tag end
)
于 2013-07-18T13:35:19.997 に答える