1. 程式人生 > >Flash ActionScript3 一種按照真實佔位寬度截短字串的方法

Flash ActionScript3 一種按照真實佔位寬度截短字串的方法



必要的時候我們需要將過長的字串截短為較短長度,比如最多顯示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'>阿拉斯加...