- ベストアンサー
正規表現を使った文字置換の方法について教えてください
- replaceメソッドと正規表現を使用して文字列の一部を置換する方法について学びます。
- 例えば、t2の文字列に含まれるclpreの文字列をclaftの文字列に置換することができます。
- 正しい記述は/t2.replace(/clpre[i]/g, claft[i])/となります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そくどは、どちらがはやいかわからないじょ! var t2 = "KJANN B CVA"; var clpre = [ "A" , "B" , " ", " "]; var claft = [ "@" , "*" , "s" , "S"]; for( var i = 0, I = clpre.length; i < I; i++ ) { t2 = t2.replace( new RegExp( clpre[i], 'g' ), claft[i] ); } alert(t2); //_________________ var t2 = "KJANN B CVA"; var clpre = [ "A" , "B" , " ", " "].join( "|" ); var myReg = new RegExp( clpre, 'g' ); var claft = function ( s ) { var r = ''; switch( s ) { case 'A': r = '@'; break; case 'B': r = '*'; break; case ' ': r = 's'; break; case ' ': r = 'S'; break; default: } return r; }; t2 = t2.replace( myReg, claft ); alert(t2);
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
2つ配列を用意するのが前提ですか? オブジェクトで処理してはまずい? <script> var t2 = "KJANN B CVA"; var cl={"A":"@","B":"*"," ":"s"," ":"S"}; for (var i in cl){ t2 = t2.replace(i,cl[i]); } alert(t2); </script>
お礼
2つ配列を準備するのは前提ではありません。 オブジェクト処理で行う方法があることを全く知りませんでした。 なるほど。こちらの方が何を何に変換したいのか後から分かりやすいですね。
- fujillin
- ベストアンサー率61% (1594/2576)
速度はわかりませんが、正規表現を使わない方法。 (↑グローバル変数は遅いとか、配列を何度も参照するなら置き換えておいたほうが早いとかいろいろあると思うので…) var t2 = "KJANN B CVA"; clpre = new Array("A" , "B" , " ", " "); claft = new Array("@" , "*" , "s" , "S"); for (i=0; clpre[i]; i++) while (t2 != (t2 = t2.replace(clpre[i],claft[i])));
お礼
なるほど、正規表現を使わなくても出来る方法があるんですね。 勉強になります。
お礼
早速ありがとうございました。 速度はどちらが速いのか分かりませんでしたが、勉強不足の私でも分かりやすかった前者を実際に採用しました。 助かったと共に勉強になりました。 ありがとうございました。