必要的时候我们需要将过长的字符串截短为较短长度,比如最多显示4个中文字,多余4个字只显示4个字(英文则应该是8个字母)等情况。
直接上函数:
function getChar(_str:String , _l:int):String {
var _ba:ByteArray = new ByteArray ;
_ba.writeMultiByte (_str, "");
if (_ba.length < _l) return _str;
_ba.position = 0;
return _ba.readMultiByte(_l, "")+"...";
}
参数解释:
_str:String 原字符串
_l:int 你想截短后保留的长度,另外,每个中文长度是2,英文是1,
注意:此方法不支持直接截短html格式字符,因为你的标签也算字符串的长度了,就是说如果你想把你TextField中的html字符串截短,你必须计算出你的真实文字前面的标签一共有多长,标签长度加上你想截短的长度才会得到你想要的,再手动增加结尾需要的标签。
我们已以下3个字符串来测试此方法:
var str1:String = "阿拉斯加的发生激烈反抗精神浪蝶狂蜂加拉塞克";
var str2:String = "asdfsdfsdfsdf";
var str3:String = "<font color='#ff0000'>阿拉斯加的发生激烈反抗精神浪蝶狂蜂加拉塞克</font>";
结果为:
trace(getChar(str1, 8)); //阿拉斯加...
trace(getChar(str2, 8)); //asdfsdfs...
trace(getChar(str3, 8)); //<font co...
trace(getChar(str3, 30)); //<font color='#ff0000'>阿拉斯加...