勘違いしながらドはまりしながら作り上げていくジジイの『JavaScript奮闘記』です。3択クイズプログラムが出来上がったので次なるターゲットに向け自作関数を準備しています。
ポク太郎です。
色々ムカつくJavaScript。今日ムカついたのは.replace()。使いにく過ぎていちいちムカつきます。冒頭に“ムカ”が3回。それ位ムカついております。これで4回目。
アッタマくるので翻訳的に自分仕様の関数に作り直し。渡された文字列dt内の指定のワードaを全部bに置き換えるreplaceall(dt,a,b)関数を作ります。
引数のデータに含まれる指定のワードを全部置き換える関数replaceall()
replaceall(dt,a,b)…文字列を全部置換して返す。 戻り値:文字列型 |
|
引数dt | 置換対象の文字列。 |
引数a | 置換される文字列。 |
引数b | 置換する文字列。 |
使用例:…変数rにOikawaNaoNagaseAiHojoMakiHiroseNaomiが代入される。
var r=replaceall('OikawaNao,NagaseAi,HojoMaki,HiroseNaomi',',',''); 誤使用のパターンと対処:もし引数dt内に変数aが存在しない場合は引数dtをそのまま返す。 |
function replaceall(dt,a,b) { var tmp; var r=''; if (dt.indexOf(a) == -1){ //引数aが存在しない時は引数dtをそのまま返す。 r=dt; } else { tmp=dt.split(a); for (var i=0;i<tmp.length;i++){ if (i==0){ r=tmp[i]; } else { r=r+b+tmp[i]; } } } return r; }
上記関数replaceall()でよく使うパターン
よく使用する場面は、不要な区切りを全部消す場合。その際の構文は、
dt=replaceall(dt,',','');
引数bに空文字を渡すと全部潰して返してくれます。
JavaScriptのように文字列も配列概念で扱うものは自作関数を作る際にロス少なく作成できる利点が。
何でもかんでも配列型にするのは便利なのか不便なのかよくわからなくなって参りました。普通は自作関数全部翻訳し直すところから始めるのけ?
コメント