Home > AS3 Archive

AS3 Archive

AS3 文字数入力制限と文字数カウント

  • Posted by: goron
  • 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でやるにはどうするんじゃ?


Index of all entries

Home > AS3 Archive

Profile

iPhone/iPad開発 web制作:平野百貨店
iPhone/iPad開発・web制作・映像制作をしている平野百貨店の店長個人の覚書です。
ご意見・ご感想などお問合せはコチラからどうぞ。

※最近ツッコミをもらうので一応書いておきます。ブログのタイトル「袖触れ合うも多少の縁」はわざとです。正確には「袖振り合うも多生の縁」が正解です。

Search
iPhone Apps






RSS
リンク
のこぎりそうの日記

Return to page top