zoukankan      html  css  js  c++  java
  • Flex 学习笔记 String长度

    根据需求要求字符串的长度,网上搜了一堆String长度算法,下面汇总并分析下。

    分析代码如下:

        <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 "+textMetrics.width); 
                }
                
            ]]>
        </fx:Script>
        <s:Label id="lb" text="abCD一二三四1234" fontSize="16" />

    初始化页面打出的信息如下:

    Length:12
    Change GBK:16Length:120
    Regex:16Length:120
    textMetrics 142

    方法调用

        import flash.text.TextLineMetrics;
        import spark.components.Label;
        private function getLabelWidth(value:String):int{
        var lb:Label = new Label();
        lb.styleName = "lbStyle";//可添加样式如果 .lbStyle{fontSize: 16;}
        lb.regenerateStyleCache( false ); 
        var textMetrics:TextLineMetrics = lb.measureText( value ); 
        return textMetrics.width+10; 
        }
  • 相关阅读:
    web架构设计经验分享(转)
    家庭反对死一批,朋友同事嘲笑死一批,害怕失败死一批,徘徊等待死一批「没有时间」又死一批(转)
    java.lang.ClassCastException: java.lang.NoClassDefFoundError cannot be cast to java.lang.RuntimeException
    Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(转)
    xcode armv6 armv7 armv7s arm64
    使用collectd与visage收集kvm虚拟机性能实时图形
    【OpenCV入门指南】第一篇 安装OpenCV
    《自己动手写CPU》写书评获赠书活动结果
    winzip15.0注冊码
    Atitit.ALT+TAB没反应车and 点击任务栏程序闪烁可是不能切换
  • 原文地址:https://www.cnblogs.com/Anlycp/p/2599844.html
Copyright © 2011-2022 走看看