Flash ActionScript3 一种按照真实占位宽度截短字符串的方法

来源:互联网 发布:淘宝联盟的返利哪来的 编辑:程序博客网 时间:2024/06/05 05:36


必要的时候我们需要将过长的字符串截短为较短长度,比如最多显示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'>阿拉斯加...

0 0