• ベストアンサー

半角空白チェックについて

いつもお世話になっております。 javascriptで半角空白チェックを行っております。 その場合に、半角空白のJISコードは キーボードから入力した場合は「0x20」 (Unicodeでも「0x20」) 代替文字列(&nbsp;)の場合は「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('&nbsp;abc de f')"> この場合、「0x20」はif文でhitしますが 「0xf8f0」にはif文でhitしません。 どういった対処が必要でしょうか? どなたかご教授下さい。 環境は OS:WindowsXP SP2 ブラウザ:IE6 です。 宜しくお願いいたします。

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

  • ベストアンサー
  • NTJ
  • ベストアンサー率44% (46/103)
回答No.3

なんか・・・・とてつもなく「変なこと」をしていませんか? まるで、VBか何かのPGを見ているような気がしますが。 要は文字列中に、半角空白が含まれているか否かを判定したいのですよね? function chk_han_kuhaku(i_char) {  if(i_char.search(/ /)>-1) alert("半角空白を含んでいます。");  if(i_char.search(/'&nbsp;/)>-1) alert("半角空白を含んでいます。"); } こういうシンプルな構造にしたほうが宜しくないですか? もしどうしても、文字位置が必要なら var Arr=i_char.search(/ |&nbsp;/g); で文字位置の配列が取得できる筈。 目的が空白文字の排除なら、 i_char.replace(/ |&nbsp;/g,''); で一発の筈。 無闇にループで一文字づつチェックする理由が、あたしにはちょっと良く解りません。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

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

noname#22259
noname#22259
回答No.1

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 + "文字目は半角空白ではありません。");     }   } }

owen10
質問者

お礼

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

関連するQ&A

  • 半角英数字を判断したい

    JAVA初心者です。 strIdに文字列が入っています。 このstrIdの文字列が半角英数字のみか判断したいのです。 ホームページを参考にし以下のように記述し、chkがtrueかfalseで判断しようかと思ったのですがだめでした。 boolean chk = true; for (int i=0; i<strId.length(); i++) { if (!(strId.charAt(i) > 0x0020 && strId.charAt(i) < 0x007F)) { chk = false; break; } } どのように記述すればよろしいのでしょうか?

    • ベストアンサー
    • Java
  • &nbspで空白を入れたいのですが、文字間隔がおかしい

    htmlで文字列を整形したいです。 12345,67890 12345<5文字空白>67890 というような感じです。 で&nbsp;というのがあるということで 12345&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;67890 としてみました。 ところが&nbspを5個いれても5文字にならないようです。 ためしに以下のようにやってみました。 123456789<br> 1&nbsp;&nbsp;456789<br> やっぱり変です。&nbspは半角の半分???なのでしょうか。 半角の空白を決めた数入れる方法を、ほかの方法でも良いので教えてください。

    • ベストアンサー
    • HTML
  • 文字列から空白を取り除きたいのですが

    C言語を勉強しはじめて間もない者です。 文字列から空白を取り除く(空白は左に詰めることで埋める)処理をしたいのですが、下記のようなやり方でうまくできなくて困っています。 ↓を実行すると" 1234"なら"12344"になるはずだったのですが、うまくいきません。何がおかしいのでしょうか?? よろしければご教授願います。 ※文字列は半角のみ想定しています。 int i = 0; char str[] = " 1 23 4 5"; char *p; p = str;   while( *p != '\0' ){     if ( isspace(*p) != 0 ){       while( *(p + i + 1) != '\0' ){         *(p + i) = *(p + i + 1);         i++;       }     }     p++;   }  

  • 空白チェック

    下記はテキストボックスのいずれかに空白があればalertで知らせるものですが、特定のテキストボックスになんらかの印をつけておいて、それのみチェックできないでしょうか。nama="" の名称以外の取得の方法で。 function EmptyCheck(){ i=0; while(i<20){ if(!document.main.elements[i].value){ alert("入力されていない項目があります。"); return false; } i++; } }

  • 「半角スペース」と「&nbsp;」の違い、を教えて

    「半角スペース」と「&nbsp;」の違い、を知りたいです。 ■背景 ・HTMLを秀丸エディタに貼ったりすると、「半角スペース」と「&nbsp;」を別認識します ・「&nbsp;」があると、色々不都合があるので、認識しやすいようにしたいです ・具体的には、「半角スペース」は目立つのでいいのですが、「&nbsp;」は分かりにくいので、これを目立たせたいです ■疑問 ・「半角スペース」と「&nbsp;」の違い、は何ですか? ・「改行されない空白文字」? ・「HTMLで使用可能な文字参照」てことは、HTMLではないのでしょうか? ・HTMLだとしたら、秀丸エディタとかにコピーした際、認識されるのはおかしいと思うのですが ■今の認識 ・HTMLで利用可能な「改行されない空白文字」 ・コピーされると認識されるので、HTMLではない ・だけど、「半角スペース」とも「全角スペース」とも違う ・??? ・もしかして「空白文字」と「スペース」は違う意味??

  • 文字間の空白(スペース)の使い方について

    HTMLで文字と文字の間にスペースを入れたい場合、どのようにするのが一般的なのか教えて頂けますでしょうか。 (初心者なのですみません・・・) (例)「あ」と「い」の間にスペースを入れたい場合。 (1)「&nbsp;」で空白を作る。 <p>あ&nbsp;い</p> (2)半角スペースキーで空白を作る。 <p>あ い</p> (1)、(2)はどちらでも良いのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • HTML
  • HTMLで空白を入れるには?

    HTMLの勉強をしております。 文字と文字の間に「空白」を入れる場合は、「&nbsp;」を書き込んだほうが良いのでしょうか? それとも、全角や半角の「スペースキー」を、上手に使い分けたほうが良いのでしょうか?

  • フォームの入力チェックをすると既に入力した項目が消える

    実は過去のQ&Aの中でご紹介されていた ホームページを拝見させて頂いたのですが、 残念ながら私の応用力が足りず、 上手く作ることが出来ません。 下記のように書いてみたのですが、 これでは未入力のメッセージにOKを押すと その前に入力したものが全て消えてしまいます。 何方か、正しい書き方をご教示下さいますよう 宜しくお願い申し上げます。 <script language="JavaScript"> <!-- function checkForm(){ if(document.form1.chk1.checked == false && document.form1.chk2.checked == false) { alert('チェックなし'); return false; } { flag = 0; for ( i = 0 ; i < document.form1.radiobtn.length ; i++){ if (document.form1.radiobtn[i].checked){ flag = 1; } } if (!flag){ alert('ラジオなし'); return false; } if(document.form1.sel.selectedIndex == 0){ alert('メニューなし'); document.form1.sel.focus(); return false; } if(document.form1.bun.value == ""){ alert('文字なし'); document.form1.bun.focus(); return false; } } return true; } //--> </script>

  • 文字列に空白を含んだ場合の処理

    現在、文字列の入力チェックの関数を作成しています。 function checkMemberId() { if(document.form1.memberId.value==undefined){ alert("番号を入力してください。"); return false; }else if(??????????){ alert("空白が含まれています。"); return false; }else { alert("半角数字を入力してください。"); return false; } } 上記の else if の条件に、document.form1.memberIdに空白を含んだ文字列が入力されたらアラートメッセージを出すという処理を記述したいのですが、どういう処理を記述すればよいのでしょうか。 空白は全角・半角とも対象で、すべて空白が入力された時も同様の処理にしたいです。 以下、該当のHTML部です。 <form name="form1"> <input type="text" name="memberId"> </form> 以上、よろしくお願い致します。

  • javascriptで記号の半角→全角変換

    Javascriptで記号の半角→全角変換をしようとしていまして、ちょっとエラーで困っております。 もし何かご存じの方がおられましたら、教えて頂けたら助かります。 【やりたいこと】 半角の英数記号を全角に変換する。 【試したコード】 var target = '0123( )'; var han= '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()=-~\\[]{}<>,.?/_'; var zen= '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!”#$%&’()=-~¥[]{}<>,.?/_'; for(i = 0; i < han.length; i++){ var regex = new RegExp(han[i], 'gm'); target = target.replace(regex, zen[i]); } 【結果】 カッコ"("の変換のときにvar regex = new RegExp(han[i], 'gm');でエラー発生。 エラー→javascript unterminated parenthetical エスケープしたりして試しましたが、()[]?辺りがやはりだめだったりします。 お知恵をいただけましたらm(_ _)m

専門家に質問してみよう