C#中进行中英文字符截取(中文2个长度,英文1个)
2017-03-05 09:03
1096 查看
前言
最近项目有个需求,就是截取文本,区分中英文字符,中文算2个长度,英文算1个长度,截取后增加…,占3个长度(包括在限制长度内),需求不复杂,想要写出较好的方法,得稍稍费点心思,下面是笔者写的代码,仅供参考。代码
/// <summary> /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度,截取后增加...,占3个长度(包括在限制长度内) /// </summary> /// <param name="str"></param> /// <param name="length">不小于3</param> /// <returns></returns> public string GetCnEnSubString(string str, int length) { if (length < 3) length = 3; //记录length一半的长度 int i = length >> 1; int j, step; //定义编码器,GB2312中文占2个长度,英文占1个长度 Encoding code = System.Text.Encoding.GetEncoding("GB2312"); //逐渐增加i值,直至长度大于限制长度 while (i <= str.Length) { j = code.GetByteCount(str.Substring(0, i)); if (j <= length) { //计算增加的步长 step = (length - j) >> 1; if (step > 0) i += step; else i++; } else { //回退,逐渐减小i值,直至加上3后,不大于限制长度 while (code.GetByteCount(str.Substring(0, i - 1)) > (length - 3)) i--; return str.Substring(0, i - 1) + "..."; } } //如果将原字符串遍历完后,仍不大于限制长度,返回原字符 return str; }
相关文章推荐
- js计算一个字符中包括中英文的长度,中文占2个字符,汉子和英文占1个字符
- 统计汉字长度2个英文字符=1个中文
- java中判断字段真实长度(中文2个字符,英文1个字符)的方法
- JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
- JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
- 获取包含中文,字母,数字集合的字符串的长度(1个汉字字符存储需要2个字节,1个英文字符存储需要1个字节)
- java中判断字符串真实长度(中文2个字符,英文1个字符)的方法
- java中判断字段真实长度的实例(中文2个字符,英文1个字符)
- 求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码,ASCII码转字符
- JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
- 截取文本,区分中英文字符,中文算两个长度,英文算一个长度
- JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
- JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
- java中判断字段真实长度(中文2个字符,英文1个字符)的方法
- 前台判断中英文字符长度,中文2英文1,并可截取
- android 字符长度限制,中文2个字符 ,英文1个字符
- JS获取字符串长度(英文占1个字符,中文汉字占2个字符)
- JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
- PHP字符截取函数。兼容中文,英文,中英文混杂等情况
- jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)