重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

いつもお世話になっております。

javascriptで半角空白チェックを行っております。
その場合に、半角空白のJISコードは
キーボードから入力した場合は「0x20」
(Unicodeでも「0x20」)
代替文字列()の場合は「0xa0」
(Unicodeでは「0xf8f0」??)
となります。

両方とも半角空白と扱いたいため以下のようなロジックを用いています。

【javascript部】
function chk_han_kuhaku(i_char) {
  for( i=0; i<i_char.length; i++ ){
    var c = i_char.charCodeAt(i);
    // Unicodeで比較
    if ((c == 0x20) || (c == 0xf8f0)) {
      alert(i + "文字目は半角空白です。");
    } else {
      alert(i + "文字目は半角空白ではありません。");
    }
  }
}

【html部】
<input type="button" value="test" onclick="javascript:chk_han_kuhaku('abc de f')">


この場合、「0x20」はif文でhitしますが
「0xf8f0」にはif文でhitしません。
どういった対処が必要でしょうか?
どなたかご教授下さい。

環境は
OS:WindowsXP SP2
ブラウザ:IE6
です。

宜しくお願いいたします。

A 回答 (3件)

なんか・・・・とてつもなく「変なこと」をしていませんか?


まるで、VBか何かのPGを見ているような気がしますが。

要は文字列中に、半角空白が含まれているか否かを判定したいのですよね?

function chk_han_kuhaku(i_char) {
 if(i_char.search(/ /)>-1) alert("半角空白を含んでいます。");
 if(i_char.search(/'/)>-1) alert("半角空白を含んでいます。");
}

こういうシンプルな構造にしたほうが宜しくないですか?
もしどうしても、文字位置が必要なら
var Arr=i_char.search(/ |/g);
で文字位置の配列が取得できる筈。

目的が空白文字の排除なら、
i_char.replace(/ |/g,'');
で一発の筈。

無闇にループで一文字づつチェックする理由が、あたしにはちょっと良く解りません。
    • good
    • 1

横からごめんなさい


>しかし、JISコードで比較することになりますが
>charCodeAtは正しくはUnicodeを返す仕様と認識しています。
charCodeAt は、Unicode を返す仕様ということは、返ってきたものはUnicode でのコードだと思いますよ。
0xA0のコードにおいてはUnicode, JIS, ASCII は同じだと考えて良いと思います。

ところで、0xf8f0 については、どこからでてきたんでしょうか?
    • good
    • 0

function chk_han_kuhaku(i_char) {


  for( i=0; i<i_char.length; i++ ){
    var c = i_char.charCodeAt(i);
    // Unicodeで比較
    if ((c == 0x20) || (c == 0xA0 )) {
      alert(i + "文字目は半角空白です。");
    } else {
      alert(i + "文字目は半角空白ではありません。");
    }
  }
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
上記方法で正しく動作します。
しかし、JISコードで比較することになりますが
charCodeAtは正しくはUnicodeを返す仕様と認識しています。
その他、対応方法等あればご教授ください。
宜しくお願いします。

お礼日時:2006/05/16 18:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!