半角相当での文字数を調べる

今更だけど「全角●●文字まで」って入力制限があって、単に文字数だと全角も半角も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 訂正]

野中さんのご指摘を受けて、訂正しました。野中さんが書かれた文字数チェックはこちら。

「半角相当での文字数を調べる」への2件のフィードバック

コメントは停止中です。