XML ファイル内に不完全な文字列があります: summary="The name is "Rambo"."
"
出力が次のようになるように、内側の引用符を正規表現を使用して置き換えたいと思います。
summary="その名は"
ランボー"
です。"
XML ファイル内に不完全な文字列があります: summary="The name is "Rambo"."
"
出力が次のようになるように、内側の引用符を正規表現を使用して置き換えたいと思います。
summary="その名は"
ランボー"
です。"
これはうまくいくはずです、相棒!
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"."
このスクリプトは、属性内のすべての間違った引用符を修正する必要があります。
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, """)+'"';
}
);
正規表現は複雑に見えますが、そうではありません:-)
([^"=<>\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
)