Home > AS3 Archive
AS3 Archive
AS3 文字数入力制限と文字数カウント
- 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でやるにはどうするんじゃ?
Tweet
- Comments: 0
- TrackBacks: 0
Home > AS3 Archive
- Profile
- 
  
 iPhone/iPad開発・web制作・映像制作をしている平野百貨店の店長個人の覚書です。
 ご意見・ご感想などお問合せはコチラからどうぞ。
 ※最近ツッコミをもらうので一応書いておきます。ブログのタイトル「袖触れ合うも多少の縁」はわざとです。正確には「袖振り合うも多生の縁」が正解です。
- Search
- iPhone Apps
- 
 
 
 
 
 
 
- RSS
- リンク








