を置換する方法

久々にとてもJavaScriptではまりました。 がどうやっても置換できないんです!具体的コードを書きましょう。

<input type="text" name="txt" value="&nbsp;">

たとえばこういうテキストボックスがあったとします。このテキストボックスは表示すると、半角スペースがひとつ表示されます。この半角スペースを「A」という文字列に置換したかったんですが、どうやっても置換できませんでした。最初に書いたコードはこんな感じ

  var value = document.frm.txt.value.replace( " ", "A" );

でもこれだと置換されません。あぁ、そっか。&nbsp;を置換しないといけないなということでこう書きました。

  var value = document.frm.txt.value.replace( "&nbsp;", "A" );

全然駄目でした_| ̄|○ そりゃそうだ。ダブルクォーテーションでかこったら単なる文字列だ。文字にしないとね…とかいってシングルクォーテーションで囲ってみましたが駄目でした…。しょうがないので文字コード調べました。&nbsp;で表示される半角スペースと、" "の半角スペースは別物でした。" " = 32と&nbsp; = 160となっていました。なんですとー!?という感じですね。というわけで書き換え

  var nbsp = String.fromCharCode( 160 );
  var value = document.frm.txt.value.replace( nbsp, "A" );

うん、でけたでけた。全然スマートじゃないけどできた。厄介な要求はさらに増え続ける毎日です。なぜ&nbsp;を置き換える必要があるのか、なぜ半角スペースでなく&nbsp;なのか…これは涙なくしては語れないお客様の要求があったからです(T_T) 今は忙しいので気が向いたら書くかもしれません( きっと誰かに言われないと書かないだろうな(苦笑) )