C#中进行中英文字符截取(中文2个长度,英文1个)
前言
最近项目有个需求,就是截取文本,区分中英文字符,中文算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个)相关推荐
- 自定义方法中英文字符截取
//方法一:(借鉴于thinkphp中的中英文字符截取) function msubstr($str, $start=0, $length, $charset="utf-8", $ ...
- python统计中英文字符_如何统计文本中的中英文字符数?Python帮你解决
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于小蚊子数据分析 ,作者小蚊子数据分析 代码 1import stri ...
- java 区分中英文,Java 区分文本中的中英文字符函数
Java 区分文本中的中英文字符函数 复制代码 代码如下: public class EnCnTest { public static void main(String args[]) { byte ...
- 计算文本长度,区分中英文字符,中文算两个长度,英文算一个长度
计算文本长度,区分中英文字符,中文算两个长度,英文算一个长度 public int Text_Length(string Text) { int len=0; fo ...
- python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...
中文字符和英文字符所占的字节长度是不一样,一个是2个字节,一个是1个字节,这给我们用英文的web框架开发中文app带来了麻烦.比如Django自带过滤器truncatewords并不支持截取中文,另外 ...
- Python统计字符串中的中英文字符、数字空格,特殊字符
# -*- coding:utf8 -*-import stringfrom collections import namedtuple def str_count(s): '''找出字符串中的中英文 ...
- python中怎么统计英文字符的个数_如何统计文本中的中英文字符数?Python帮你解决...
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于小蚊子数据分析 ,作者小蚊子数据分析 代码 1import stri ...
- python中的中英文字符统计
英语字符和中文字符的区别在于:大小写字符和字符个数(中文中是一个词语) 统计英语字符: def getText(): txt=open('halmet.txt','r').read() txt=txt ...
- js中根据特定字符截取字符串
1,indexOf()根据字符确定位置 2,substring()根据位置截取字符串. 举例:pLLTude:28.109069|116.218152 ,根据 | 截取它前后得纬度和经度 pLLTud ...
最新文章
- modin pandas 加速
- iOS开发之解决隐藏tabbar后原位置无法响应点击事件的问题
- Hibernate学习之一对多关联
- Py之matplotlib:python包之matplotlib库图表绘制包的简介、安装、使用方法(matplotlib颜色大全)详细攻略
- 不会连PPPoE协议都不会配吧?
- spring boot添加swagger步骤
- 04-树4 是否同一棵二叉搜索树 (25 分)
- C++11新特性(3)
- Spring集成Quartz定时任务
- Django项目将debug模式设置为false时,静态文件出错
- RemObjects_SDK平台远程处理框架
- HTML将广告关闭的JS代码,js实现可关闭的对联对联广告代码广告效果代码
- 计算机基础与office应用教程,计算机基础与Office 2010实用教程
- 视频教程-Java高级技术-Java
- HTML特效代码大全(史上最全)
- 复习单片机:点亮LED(内含实物图+硬件设计+软件编程+原始代码)
- postMan中文修改
- 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))
- 详解200行Python代码实现控制台版2048【总有一款坑适合你】【超详细】
- 绕过discuz论坛阅读或下载权限