蓝色天空 发表于 2012-12-30 16:16:12

Flex 学习笔记 String长度

<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" />
页: [1]
查看完整版本: Flex 学习笔记 String长度