前言

最近项目有个需求,就是截取文本,区分中英文字符,中文算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;elsei++;}else{//回退,逐渐减小i值,直至加上3后,不大于限制长度           while (code.GetByteCount(str.Substring(0, i - 1)) > (length - 3))i--;return str.Substring(0, i - 1) + "...";}}//如果将原字符串遍历完后,仍不大于限制长度,返回原字符return str;
}

C#中进行中英文字符截取(中文2个长度,英文1个)相关推荐

  1. 自定义方法中英文字符截取

    //方法一:(借鉴于thinkphp中的中英文字符截取) function msubstr($str, $start=0, $length, $charset="utf-8", $ ...

  2. python统计中英文字符_如何统计文本中的中英文字符数?Python帮你解决

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于小蚊子数据分析 ,作者小蚊子数据分析 代码 1import stri ...

  3. java 区分中英文,Java 区分文本中的中英文字符函数

    Java 区分文本中的中英文字符函数 复制代码 代码如下: public class EnCnTest { public static void main(String args[]) { byte ...

  4. 计算文本长度,区分中英文字符,中文算两个长度,英文算一个长度

    计算文本长度,区分中英文字符,中文算两个长度,英文算一个长度 public int Text_Length(string Text)       {             int len=0; fo ...

  5. python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...

    中文字符和英文字符所占的字节长度是不一样,一个是2个字节,一个是1个字节,这给我们用英文的web框架开发中文app带来了麻烦.比如Django自带过滤器truncatewords并不支持截取中文,另外 ...

  6. Python统计字符串中的中英文字符、数字空格,特殊字符

    # -*- coding:utf8 -*-import stringfrom collections import namedtuple def str_count(s): '''找出字符串中的中英文 ...

  7. python中怎么统计英文字符的个数_如何统计文本中的中英文字符数?Python帮你解决...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于小蚊子数据分析 ,作者小蚊子数据分析 代码 1import stri ...

  8. python中的中英文字符统计

    英语字符和中文字符的区别在于:大小写字符和字符个数(中文中是一个词语) 统计英语字符: def getText(): txt=open('halmet.txt','r').read() txt=txt ...

  9. js中根据特定字符截取字符串

    1,indexOf()根据字符确定位置 2,substring()根据位置截取字符串. 举例:pLLTude:28.109069|116.218152 ,根据 | 截取它前后得纬度和经度 pLLTud ...

最新文章

  1. modin pandas 加速
  2. iOS开发之解决隐藏tabbar后原位置无法响应点击事件的问题
  3. Hibernate学习之一对多关联
  4. Py之matplotlib:python包之matplotlib库图表绘制包的简介、安装、使用方法(matplotlib颜色大全)详细攻略
  5. 不会连PPPoE协议都不会配吧?
  6. spring boot添加swagger步骤
  7. 04-树4 是否同一棵二叉搜索树 (25 分)
  8. C++11新特性(3)
  9. Spring集成Quartz定时任务
  10. Django项目将debug模式设置为false时,静态文件出错
  11. RemObjects_SDK平台远程处理框架
  12. HTML将广告关闭的JS代码,js实现可关闭的对联对联广告代码广告效果代码
  13. 计算机基础与office应用教程,计算机基础与Office 2010实用教程
  14. 视频教程-Java高级技术-Java
  15. HTML特效代码大全(史上最全)
  16. 复习单片机:点亮LED(内含实物图+硬件设计+软件编程+原始代码)
  17. postMan中文修改
  18. 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))
  19. 详解200行Python代码实现控制台版2048【总有一款坑适合你】【超详细】
  20. 绕过discuz论坛阅读或下载权限

热门文章

  1. push出页面和present一样底部垂直出现(从下向上推出)
  2. 第5天下篇:在Flask应用中使用用户认证—Flask_Login
  3. 平面方程的几种形式及推导过程(总结)
  4. ssm财务管理系统 毕业设计源码282251
  5. 手把手教你建github技术博客by hexo
  6. 支付通道怎么选择比较靠谱?
  7. dota2已连接协调服务器,正在登陆中的解决办法
  8. unity 接入shareSDK进行微信分享(记录)
  9. 彼得.林奇(Peter Lynch)--现代投资的最佳实践者
  10. 机器人“丢饭碗”背后的人工智能难题