- 2010年3月29日 20:57
- AS3
今日はAS3です。
タイトルの通り、文字数入力制限と文字数カウント。
グーグル先生に聞けば沢山出てくるのですが、自分的メモ。
TextFieldの文字数制限にmaxCharsを使えば文字数を制限できます。
ただ、半角全角も判定したいときには使えないです。
それで、ByteArrayを使えばよいとのことでやってみました。
(全角16文字、半角32文字)
private var tempStr:String;//前回入力時のstringがはいるprivate function textInputCheck(tf:TextField):void {
var maxNum = 32;
var byteArray:ByteArray = new ByteArray();
byteArray.writeMultiByte(tf.text, "shift_jis");
var len:int = byteArray.length;
if ( len > maxNum) {
trace("制限数以上");
tf.text = tempStr;
} else {
tempStr = tf.text;
}
}
TextField の FocusEvent.FOCUS_OUTやKeyboardEvent.KEY_UPで呼んでみました。
※ただ、これだと日本語入力で確定前のテキストは上手く判定されません。。。
次は文字数のカウント。こちらも全角半角も判定します。
基本的にbyteArrayを使うことは変わりありません。
全角10文字、半角20文字以上の場合、その文字列に「...」をつけます。
private function stringNum(str:String):String { var maxNum = 20; var byteArray:ByteArray = new ByteArray(); byteArray.writeMultiByte(str, "shift-jis"); var len:Number = byteArray.length; if (len > maxNum) { var counter:Number = 0; var i:Number = 0; var myString:String = "";//1文字づつstringを取り出してカウント
while (maxNum>counter) {
if (str.charCodeAt(i)<=255) {
//半角の場合
counter += 1;
} else {
//全角の場合
counter += 2;
}
var getStr:String = str.substr(i, 1);
myString+=getStr;
i++;
}
myString += "...";
}else {
//指定した文字数以下の場合はそのまま
myString = str;
}
return myString;
}
参考にさせて頂いたサイト
http://air.creator.ms/bytearray.html
さぁ、これをObjective-Cでやるにはどうするんじゃ?
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://www.hirano-dept.com/mt/mt-tb.cgi/92
- Listed below are links to weblogs that reference
- AS3 文字数入力制限と文字数カウント from 袖触れ合うも多少の縁