私はhtml文字列をエスケープするために最善の方法を探していましたが、そのことに関するいくつかの議論が見つかりました:discussion 1discussion 2。それは私にreplaceAllの機能につながる。パフォーマンステストを行い、同様の速度を達成して解決策を見つけようとしました。(replaceAllのパフォーマンスシークレットとは何ですか? [HTMLエスケープ]
ここでは最終的にtest case setです。ネットで見つけて試してみましょう(下部に4つのケースがあります)。replaceAll()
?!
String.prototype.replaceAll = function(str1, str2, ignore)
{
return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2);
};
:秘密の魔女が
replaceAll()
ソリューションとてもスピーディー
挨拶
コードスニペットを作成されたどのようなパフォーマンス
これまでqwerty
最速の場合の
クレジット:
html.replaceAll('&', '&').replaceAll('"', '"').replaceAll("'", ''').replaceAll('<', '<').replaceAll('>', '>');
方法で構築された多くは、ネイティブコードで実装され、事前に最適化されている(正規表現が一つである)、それらをエミュレートJavascriptの方が早いのは簡単ではありません。 –
確かに、なぜ "新しいRegExpを置き換える"ケースが遅いのですか? RegExpも使用します。 – Saram
はまだ正規表現なしで置き換えられるようですhttp://jsperf.com/replaceallvssplitjoin –