我花了一段時間尋找最好的方式來逃避html字符串,並發現一些討論:discussion 1discussion 2。它引導我到replaceAll函數。然後我做了性能測試,並試圖找到解決方案實現了類似的速度,但沒有成功:(什麼是替換所有表現祕密? [HTML轉義]
這是我最後的test case set,我發現它的淨和我嘗試4例(在底部)擴大,但仍無法達到replaceAll()
。性能
什麼是祕密女巫使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);
};
學分迄今qwerty
最快的情況下:
html.replaceAll('&', '&').replaceAll('"', '"').replaceAll("'", ''').replaceAll('<', '<').replaceAll('>', '>');
許多內置方法在本機代碼和預先優化(正則表達式是一個)來實現,在模仿它們JavaScript以更快的方式顯然很難做到。 –
肯定,但爲什麼「更換新RegExp」的情況是如此緩慢。它也使用RegExp。 – Saram
仍然沒有正則表達式更換似乎更快http://jsperf.com/replaceallvssplitjoin –