国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript 替換Html標簽實現代碼

2024-05-06 14:13:33
字體:
來源:轉載
供稿:網友
代碼如下:
str = str.<br />
replace( /&(?!#?/w+;)/g , '&').<br />
replace( /undefinedundefined([^undefinedundefined]*)"/g , '“$1”' ).<br />
replace( /</g , '<' ).<br />
replace( />/g , '>' ).<br />
replace( /…/g , '…' ).<br />
replace( /“/g , '“' ).<br />
replace( /”/g , '”' ).<br />
replace( /‘/g , '‘' ).<br />
replace( /'/g , ''' ).<br />
replace( /—/g , '—' ).<br />
replace( /–/g , '–' );

上面這個還算短了,我看過一些論壇的JS代碼,在把Wind Code轉換成HTML時,那真是瘋子似的寫上二三十行。其實我們大可以把這些匹配模式與替換后的字符放到一個哈希中,然后一口氣替換掉。
代碼如下:
var hash = {
'<' : '<' ,
'>' : '>',
'…' : '…',
'“' : '“' ,
'”' : '”' ,
'‘' : '‘' ,
''' : ''' ,
'—' : '—',
'–' : '–'
};
str = str.
replace( /&(?!#?/w+;)/g , '&' ).
replace( /undefinedundefined([^undefinedundefined]*)"/g , '“$1”' ).
replace( /[<>…“”‘'—–]/g , function ( $0 ) {
return hash[ $0 ];
});

但這個缺陷也很明顯,如哈希的鍵必須是簡單的普通字符串,不能是復雜正則,這就是我們不得不分開的原因。replace在老一點的瀏覽器是不支持function的。為此,我們只好放棄上面最后那個replace方式,替換方統一為普通字符串。
代碼如下:
String.prototype.multiReplace = function ( hash ) {
var str = this, key;
for ( key in hash ) {
if ( Object.prototype.hasOwnProperty.call( hash, key ) ) {
str = str.replace( new RegExp( key, 'g' ), hash[ key ] );
}
}
return str;
};

Object.prototype.hasOwnProperty.call( hash, key )是用來過濾繼承自原型的方法與屬性的。這樣一來,使用就簡單了:
代碼如下:
str = str.multiReplace({
'&(?!#?//w+;)' :'&',
'undefinedundefined([^undefinedundefined]*)" : '“$1”',
'<' : '<' ,
'>' : '>',
'…' : '…',
'“' : '“' ,
'”' : '”' ,
'‘' : '‘' ,
''' : ''' ,
'—' : '—',
'–' : '–'
});
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 玉林市| 通许县| 大石桥市| 孙吴县| 龙岩市| 化州市| 赞皇县| 濉溪县| 从化市| 上杭县| 彰化县| 井研县| 府谷县| 肃宁县| 保康县| 广河县| 农安县| 瑞昌市| 宁城县| 南澳县| 威宁| 葫芦岛市| 枣强县| 闽清县| 两当县| 东乡县| 鱼台县| 紫阳县| 灵璧县| 丹凤县| 德格县| 二连浩特市| 巴青县| 贺兰县| 桃江县| 临沭县| 怀远县| 湛江市| 扶风县| 高要市| 阜平县|