yoshiweb.NET

ActionScriptで文字判定

テキストフィールドに入力された文字が全角か?半角か?などを調べる ActionScript です。
チェックする文字の文字コードを調べ、指定した範囲にその文字が存在するかなどを調べます。// コードチェック(文字,範囲小,範囲大)
function checkCode(str, min, max) {
var len = str.length;
while (len--) {
var num = str.substr(len, 1).charCodeAt(0);
if (nummax) {
return false;
break;
}
}
return true;
}

文字列が全て半角数字か、アルファベットの大文字/小文字、半角カタカナなどをチェックしたい場合は、文字と範囲を指定して以下のようになります。
// 半角数字か?
trace(checkCode("123", 0x30, 0x39)); //true
trace(checkCode("abc", 0x30, 0x39)); //false

// 半角大文字アルファベットか?
trace(checkCode("ABC", 0x41, 0x5a)); //true

// 半角小文字アルファベットか?
trace(checkCode("abc", 0x61, 0x7a)); //true

// 半角カタカナか?
trace(checkCode("abc", 0xFF61,0xFF9F)); //false

文字列が全て半角文字か判定、文字列のバイト数を調べる応用例です。// 文字列が全て半角文字かを判定
function checkHalf(str){
return (checkCode(str, 0x00, 0x7f) || checkCode(str, 0xFF61,0xFF9F)) ? true : false;
}
trace(checkHalf("AAA")); //true
trace(checkHalf("AあA")); //false

// 文字列のバイト数を調べる
function getStrBytesTotal(str) {
var cnt = 0;
var len = str.length;
while (len--) {
(checkHalf(str.substr(len, 1))) ? cnt++ : cnt += 2;
}
return cnt;
}
trace(getStrBytesTotal("ああああ")); //8


全角→半角変換を作ろうと思ったら、JavaScriptで公開してくれている人がいました。
AOK - 全角英数字・記号を半角に置換

半角カナの変換は1文字ずつ置換した方がよさそう...。
JavaScript例文辞典 - 半角カナから全角カナへ変換する
JavaScript例文辞典 - 半角カナから全角カナへ変換する(濁点等対応版)

IT用語辞典 - ASCII文字コード
Flash-ML - [flash:25713] Re:半角と全角の判定
Flash-ML - [flash:25698] タグを消去して単純なテキスト文章にする方法
GAC - Flash[6537] 半角
とほほ - 漢字コードについて

<追記>
2006/04/29 - AS2.0版は Flash OOP の 自作クラス公開・共有環境プロジェクト で公開しています。※プロジェクトは自然消滅しました(?)。
2005/04/07 - 「文字コード判定」という言い方は「 Shift-JIS か UTF-8 かを判断するスクリプト(?)」と思われるので、文章を少し改訂。
2005/03/17 - 全角半角変換等のリンク追加

投稿日 : 2005年02月15日 - yoshiweb - カテゴリ: ActionScript

コメント

投稿者 : remi

はじめまして。突然すいません;;
remiと申します。
スクリプトはかなり初心者なのでお手柔らかにお願いできたらと思います。

半角と全角がごちゃまぜになっている外部テキストを読み込み、その文字数ぴったりの横幅のテキストボックスを作成したい次第です。
その際、文字列のバイト数を出すにはどのようにすればよいでしょうか。

宜しくお願いします。
2005年12月28日 11時53分43秒

投稿者 : yoshiweb

書き込みありがとうございます。
横幅をぴったりあわせたいということでしたら、上のスクリプトは無視してこんな感じでいかがでしょう。
_txt.autoSize = true;
↑「_txt」はダイナミックテキストの名前に変えてください。
2005年12月28日 17時06分09秒

投稿者 : remi

回答ありがとうございます!

autoSizeなるものがありましたかっ!
実はティッカーのようなものを作りたいとおもっていまして。
これでもう一度挑戦してみます。

ありがとうございます!
2005年12月28日 18時29分27秒