最近的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
{ cn++;
count+=23; //一个中文字占23个像素
}else{
en++;
count+=10;//一个英文字占10个像素
}
}
return count;
}
注:这个只适用于等宽的字符
TextField里面textWidth可以直接取到非等宽的文本宽度
Comments are closed.