今更だけど「全角●●文字まで」って入力制限があって、単に文字数だと全角も半角も1文字になってしまうので、関数を書いてみました。
文字をエンコードしてみて1文字なら半角、2文字以上なら全角3文字を越えたら全角・・・っていう判断です。String.length()は改行コードも1文字にカウントするので、改行コードは統一した上で除外(半角カナが3文字の場合があるので修正)。
これが最善かはわかりませんが…。みんなどうやってるんだろう?
//半角相当での文字数を調べる(改行コードは除外)function xGetCharLength(str:String):int {//改行コード統一var val:String = str.replace(“\r\n”,”\r”).replace(“\n”,”\r”);var array:Array = new Array();var count_char:int = 0;for (var i:int = 0; i<val.length; i++) {//改行コードは除外if (val.charCodeAt(i) != 13) {if(escapeMultiByte(val.charAt(i)).length > 1) {if (escapeMultiByte(val.charAt(i)).length > 3) {count_char += 2;} else {count_char+=1;}}}return count_char;}
[2010.12.16 訂正]
野中さんのご指摘を受けて、訂正しました。野中さんが書かれた文字数チェックはこちら。
半角の記号が含まれる場合には、String.lengthの値を3で切り分けた方がよさそうです。
F-site「全角(2バイト)と半角(1バイト)を区別したバイト数の計算」
http://f-site.org/articles/2010/12/16165618.html
ご指摘ありがとうございます。早速訂正しました。