【转载】C# 字符串截取指定长度的中文字符--精点

通常,一个中文会占两个字节的空间。很多语言里,一个中文字符就算是2个字符长度。

但在C#中,string里包含的中文字符只占一个字符长度。这就导致很多时候,使用string.SubString(int startIndex,int length)方法来截取字符会错位。

最近由于工作原因,会截取指定长度的字符来使用。但是在文档里,1个中文是2个长度来计算。刚开始还只是以为文档错误,后来才知道是由于C#的差异造成的。

刚开始,是直接到网上找算法,但是找到的算法,基本思路都是挨个字符判断(根据ASCII值)。不是算法复杂,就是容易出错,且不能涵盖所有的中文。

稍微研究了下,还是利用.Net框架自带的方法最简单。

基本思路如下,将string转化为byte[] ,将byte[]截取后,再转化为string ,这种方法,两步完成,且可谓万无一失。

public static string SubString(string toSub,int startIndex,int length)

{

    byte[] subbyte=System.Text.Encoding.Default.GetBytes(toSub);

    string Sub=System.Text.Encoding.Default.GetString(subbyte,startIndex,length);

    return Sub;

}

稍微解释下参数,toSub -需要截取的字符串,startIndex -开始截取的位置索引, length -截取的长度

用法基本和string.SubString(int startIndex,int length)一样。

时间: 2024-12-23 13:05:35

【转载】C# 字符串截取指定长度的中文字符--精点的相关文章

jQuery实现的截取指定长度字符串代码

jQuery实现的截取指定长度字符串代码:截取字符串是常有的操作,可以说非常的频繁,几乎任何有新闻列表形式的站点都会有此操作,下面就是一段能够实现此功能的代码实例,直接套用就可以了,希望能够大家带来一定帮助.代码如下: <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>批量注册事件处理函数-蚂蚁部落</title> <style type="text

js如何截取字符串右边指定长度的字符

js如何截取字符串右边指定长度的字符:通常情况下都从字符串的左边开始截取字符串,下面介绍一下如何从字符串的右边截取字符串.代码如下: String.prototype.right=function(length_) { var _from=this.length-length_; if(_from<0) _from=0; return this.substring(this.length - length_,this.length); } var str="antzone"; c

asp.net截取指定长度的字符串内容

1 /// <summary> 2 /// 用于截取指定长度的字符串内容 3 /// </summary> 4 /// <param name="sString">用于截取的字符串</param> 5 /// <param name="nLength">截取字符串的长度</param> 6 /// <returns>返回截取后的字符串</returns> 7 public

sql中从指定位置截取指定长度字符串

1. 字符串函数应用 --从指定索引截取指定长度的字符串 SELECT substring('abcdefg',2,5) --获取字符串中指定字符的索引(从1开始) select charindex(',','ab,cdefg') --实际应用中的语句 select proId,color,substring(FacePath,0,charindex(',',FacePath)) as FacePath from proselect where id=1000000 2. 日期函数应用 --获取

jQuery截取指定长度字符串

例子,截取字符串代码. <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery截取字符串操作---www.jbxue.com</title> <script type="text/javascript"

截取指定长度的字符串

/* * 函数说明:截取指定长度的字符串 * utf-8专用 汉字和大写字母长度算1,其它字符长度算0.5 * * @param string $str 原字符串 * @param int $len 截取长度 * @param string $etc 省略字符... * @return string 截取后的字符串 */ if(!function_exists('ReStrLen')) { function ReStrLen($str, $len=10, $etc='...') { $restr

截取指定长度字节数后的字符串(Java方法实例,注:同样思路js也适用)

可能之前是习惯了上网查看其他人的资料,当我遇到这样的问题的时候,我第一时间想到的就是上网查个现成的方法直接用:可是查阅网上各大论坛以及其他资料之后,发现大部分人都是照搬其他人的,这种情况很严重,而且个人感觉很不利于个人技术的成长:当然更重要的原因是,我感觉网上的大部分方法都把问题给复杂化了,无论是用js方法截取还是通过封装Java类,都感觉繁琐了些:为此我自己写了个相对来说较为简单的方法,其实很简单的思路和方法就能实现,下面奉上我自己的方法,希望大家多多指正不足之处(支持全角输入的字符和汉字等,

截取指定长度字符串长度代码实例

截取指定长度字符串长度代码实例:字符串的长度在默认状态下往往不能够满足需求,比如新闻列表新闻标题的长度,如果过长往往会引起换行,影响美观度,进而一项用户体验,所以需要根据需要截取字符串长度,下面就分享两端能够实现此功能的代码,希望对大家有所帮助.代码示例如下:一.CSS方式:html代码: <div class="cutText">蚂蚁部落欢迎您,只有奋斗才会有美好的明天!</div> CSS代码: .cutText{ width:150px; height:2

截取指定长度文章点击可以展开全部代码

截取指定长度文章点击可以展开全部代码:文章的篇幅往往不是那么恰到好处,如果以原有的篇幅展示,那么有可能会影响网页的布局或者美观度,这个时候就要根据情况适量截取一定的字符串,以适应布局,不过当点击一个按钮的时候依然可以展开全部的内容,下面就通过一个实例详细介绍一下如何实现此效果,代码示例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="