最近的flash项目中遇到一个问题:在字符串中既有中文又有英文的情况下,获取字符串的宽度。

很显然,中文占用的宽度和英文占用的宽度是不一样的,要分开处理,网上google了下,发现

用匹配中文字符的正则表达式最靠谱

根据这个原理,我在as3中写了个函数来获取中英文的字符串宽度:

/**

*获取中英文的字符串宽度

*输入:中英文的字符串s

*输出:中英文的字符串宽度

*/

function distinguish_cn_en(s){
    var count:int=0;
    var cn=0;
    var en=0;
    var reg:RegExp = /[\u4e00-\u9fa5]/;
    for (var i=0; i    if(reg.test(s.charAt(i)))//cn
    {   cn++;
        count+=23; //一个中文字占23个像素
        }else{
            en++;
            count+=10;//一个英文字占10个像素
            }
                  }
                 return count;
    }

 

 

注:这个只适用于等宽的字符

TextField里面textWidth可以直接取到非等宽的文本宽度