扩展TextField,合理计算中文字符长度(转)
2011-03-12 16:43
197 查看
本文转自http://l4cd.net/blog/post-old-139.html, 如需转载或引用请标明作者和出处。
//Copyright © 2009. Http://L4cd.Net All Rights Reserved. package net.L4cd.display { import flash.events.Event; import flash.events.TextEvent; import flash.text.TextField; import flash.utils.ByteArray; /** * 扩展TextField类,中文以2字符长度计算 * * @author L4cd.Net * @playerversion Flash player 9 * @langversion 3.0 * @version 2009-06-16 */ public class TextFieldExt extends TextField { private var _maxChars:int = -1; public function TextFieldExt() { super(); } override public function get maxChars():int { return _maxChars; } override public function set maxChars(value:int):void { _maxChars = value; if(maxChars<0) { removeEventListener(TextEvent.TEXT_INPUT,input); }else { addEventListener(TextEvent.TEXT_INPUT,input); text = getTextByCharLength(text,maxChars); } } override public function get length():int { return getCharLength(text); } private function input(e:TextEvent):void { //拦截并阻止textinput事件,手动处理内容输入 var textField:TextField = e.currentTarget as TextField; var temp:String = getTextByCharLength(e.text,maxChars - getCharLength(text) + getCharLength(selectedText)); var index:int = selectionBeginIndex; replaceText(selectionBeginIndex,selectionEndIndex,temp); setSelection(index+temp.length,index+temp.length); dispatchEvent(new Event(Event.CHANGE,true)); e.preventDefault(); } /** * 获取字符长度,一个中文算2长度 * @param txt * @return 返回长度值 */ private function getCharLength(txt:String):int { var byte:ByteArray = new ByteArray(); byte.writeMultiByte(txt,"gb2312"); byte.position = 0; return byte.bytesAvailable; } /** * 截取指定长度的文本内容,一个中文算2长度 * @param txt 需要截取的文本 * @param length 需要截取的长度 * @return 截取后的内容 */ private function getTextByCharLength(txt:String,length:int):String { if(length<1)return ""; var byte:ByteArray = new ByteArray(); byte.writeMultiByte(txt,"gb2312"); byte.position = 0; return byte.readMultiByte(Math.min(length,byte.bytesAvailable),"gb2312"); } } }
相关文章推荐
- javascript 计算中文字符长度
- Lua实现计算 UTF8 字符串的长度,每一个中文算一个字符
- Objective-C ,ios,iphone开发基础:如何判断一个字符是不是中文字符。计算一段字符串的长度。
- 修改jquery.validate.js计算中文字符长度的规则。
- Java String类型含普通字符以及中文字符,计算等价的中文字符串长度
- sql计算字符串中包含中文、英文字符长度
- javascript计算中文字符长度(一个中文字符相当于两个英文字符)
- 处理URL中的中文等字符,计算含有中英文的字符串的长度
- Android EditTexit设置最大长度 中文按2个字符计算
- js计算一个字符中包括中英文的长度,中文占2个字符,汉子和英文占1个字符
- UITextField计算中英文混合的字符长度,中文2字节,英文1字节
- 自定义计算字符长度,中文占2
- 计算一段字符串的长度(中文算两个字符)
- lua 含中文的字符串处理--分离字符、计算字符数、截取指定长度
- Lua 计算 UTF8 字符串的长度,每一个中文算一个字符
- python 计算字符串长度,一个中文算两个字符
- 计算文本长度,区分中英文字符,中文算两个长度,英文算一个长度
- utf-8和GBK中文字符的长度计算
- C#计算字符串长度(中文两个字符)
- 计算字符串长度,中文俩字符,数字…