str = str.
>replace( /&(?!#?w ;)/g , '&').
replace( /&(?!#?w ;)/g , '"$1"' ).
replace( /replace( />/g , '>' ).< br /> ;
replace( /…/g , '…' ).
replace( /”/g , '"' ).
replace ( /" /g , '"' ).
replace( /'/g , ''' ).
replace( /'/g , '' ' ).
replace( /—/g , '—' ).
replace( /–/g , '–' ); >
上記は非常に短いものですが、Wind コードを HTML に変換するときに 20 行または 30 行も記述するのは非常におかしなことです。実際、これらの一致するパターンを置き換えたものと比較できます。文字はハッシュに入れられ、一度に置き換えられます。 🎜>'<' : '>' '…' : '…'、
'"' : '"' 、
'"' : '"' 、
''' : ''' 、
''' : '' ' ,
'—' : '—',
'–' : '–'
しかし、この欠陥も明らかです。単純な通常の文字列である必要があり、複雑な通常の文字列であることはできません。これが、理由を区別する必要がある理由です。置換機能は古いブラウザではサポートされていません。このため、上記の最後の置換メソッドを放棄する必要があり、置換メソッドは通常の文字列に統一されます。
コードをコピー
コードは次のとおりです。
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 ;)' :'&',
'未定義未定義([^未定義未定義]*)" : '"$1"',
' < ' : '<' 、
'>' : '>'、
'…' : '"' 、
'" : ' ''' 、
'' : ''' 、
''' : ''' 、
'—' : '—'、
'–' : '–'