• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:replaceでの正規表現の記載について教えて下さい。)

正規表現を使った文字置換の方法について教えてください

このQ&Aのポイント
  • replaceメソッドと正規表現を使用して文字列の一部を置換する方法について学びます。
  • 例えば、t2の文字列に含まれるclpreの文字列をclaftの文字列に置換することができます。
  • 正しい記述は/t2.replace(/clpre[i]/g, claft[i])/となります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

そくどは、どちらがはやいかわからないじょ! 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);

pikopiko29
質問者

お礼

早速ありがとうございました。 速度はどちらが速いのか分かりませんでしたが、勉強不足の私でも分かりやすかった前者を実際に採用しました。 助かったと共に勉強になりました。 ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

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>

pikopiko29
質問者

お礼

2つ配列を準備するのは前提ではありません。 オブジェクト処理で行う方法があることを全く知りませんでした。 なるほど。こちらの方が何を何に変換したいのか後から分かりやすいですね。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

速度はわかりませんが、正規表現を使わない方法。 (↑グローバル変数は遅いとか、配列を何度も参照するなら置き換えておいたほうが早いとかいろいろあると思うので…) 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])));

pikopiko29
質問者

お礼

なるほど、正規表現を使わなくても出来る方法があるんですね。 勉強になります。