ASP.NET 中计算中英文混合字符串长度

来源:互联网 发布:linux nano 编辑:程序博客网 时间:2024/06/11 14:11
 

        在排版中我们基本认为一个英文字符占据宽度基本为汉字的1/2,twitter中的140个字符,用英语来写的话其实写不几个单词,而中文的140个汉字就基本能把一个观点表达清楚。因此有些情况是要求英文字符是按中文字符的半个来计算的,那么可以使用正则表达式来匹配每个字符是否为汉字。以下根据不同需要来进行匹配

[\u4E00-\u9FA5] 匹配简体

[\u4E00-\u9FFF] 匹配简体和繁体

[\u2E80-\u9FFF] 匹配所有东亚区的语言

 

  

/// <summary>/// 检查中英文混合字符长度(英文字符算0.5,中文算1)/// </summary>/// <param name="source"></param>/// <returns></returns>private float GetStringLengthWithChinlish(string source){    Regex r = new Regex(@"[\u4E00-\u9fa5]");//中文    float len = 0.0F;    char[] stringChar = source.ToCharArray();    foreach (char chr in stringChar) {        Console.Write(chr.ToString());        if (r.IsMatch(chr.ToString())) {            len += 1;        } else {            len += 0.5F;        }    }    return len;}

 

 


 

原创粉丝点击