六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 1539|回复: 0

Flex 学习笔记 String长度

[复制链接]

升级  56%

41

主题

41

主题

41

主题

秀才

Rank: 2

积分
134
 楼主| 发表于 2012-12-30 16:16:14 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">
根据需求要求字符串的长度,网上搜了一堆String长度算法,下面汇总并分析下。

分析代码如下:
<div class="cnblogs_code">    <fx:Script>
        <![CDATA[
            import flash.utils.ByteArray;
            
            //界面初始化
            private function init():void{
                trace("Length:"+lb.text.length);
               
                //一个字节大概7.5px宽,下面求得的字节数*7.5
                //编码转换
                var byteArr:ByteArray = new ByteArray();
                byteArr.writeMultiByte(lb.text,"gbk");  
                var byteLength:int = byteArr.length;
                trace("Change GBK:"+byteLength +"Length:"+byteLength * 7.5);
               
                //通过正则表达式将1个中文替换成两个"x",实现了真正字节长度的读取.
                var n:int = lb.text.replace(/[^\x00-\xff]/g,"xx").length;
                trace("Regex:"+n +"Length:"+n * 7.5);
               
                //大小写字母,运算符,百分号等特殊标符使得上面计算结果出来的宽度不如意
                //如字体加粗、字体大小调整也使得长度有所变化
               
                //最后使用textMetrics来计算某文本的宽度
                var textMetrics:flash.text.TextLineMetrics = lb.measureText( lb.text );
                trace("textMetrics width:"+textMetrics.width);
            }
            
        ]]>
    </fx:Script>
    <s:Label id="lb" text="abCD一二三四1234" fontSize="16" />
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表