C#中如何按字节数截取字符串?

您所在的位置:网站首页 string几个字节 C#中如何按字节数截取字符串?

C#中如何按字节数截取字符串?

2024-07-12 10:15:28| 来源: 网络整理| 查看: 265

今天要截取一个文档,发现C#中substring默认是将汉字当一个字节来截取的,但是我需要把汉字按照2个字节来算。

比如:

str="雪洁hello"

我想要前5个字节的字符,也就是"雪洁h"。

如何处理?

C#中substring默认是将汉字当一个字节来截取的,那么如何按字节数截取字符串?

答案:

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String str = "雪洁之家,xuejie's blog,你好,hello"; TextBox1.Text = str.Substring(0, 8); TextBox2.Text = SubstringByte(str, 0, 8); TextBox3.Text = cutSubstring(str, 8); TextBox4.Text = SubstringByte(str, 0, 3); TextBox5.Text = cutSubstring(str, 3); } private static Encoding _encoding = System.Text.Encoding.GetEncoding("GB2312"); //第一种方法 private string SubstringByte(string text, int startIndex, int length) { byte[] bytes = _encoding.GetBytes(text); return _encoding.GetString(bytes, startIndex, length); } //第二种方法 private string cutSubstring(string s, int length) { byte[] bytes = System.Text.Encoding.Unicode.GetBytes(s); int n = 0; // 表示当前的字节数 int i = 0; // 要截取的字节数 for (; i < bytes.GetLength(0) && n < length; i++) { // 偶数位置,如0、2、4等,为UCS2编码中两个字节的第一个字节 if (i % 2 == 0) { n++; // 在UCS2第一个字节时n加1 } else { // 当UCS2编码的第二个字节大于0时,该UCS2字符为汉字,一个汉字算两个字节 if (bytes[i] > 0) { n++; } } } // 如果i为奇数时,处理成偶数 if (i % 2 == 1) { // 该UCS2字符是汉字时,去掉这个截一半的汉字 if (bytes[i] > 0) i = i - 1; // 该UCS2字符是字母或数字,则保留该字符 else i = i + 1; } return System.Text.Encoding.Unicode.GetString(bytes, 0, i); } }

实例效果:

不用多说相信大家能看出区别,和实现方法,如有其他需求可自行添加

顺便感谢KOFIP 分享的第三种方法,效果图上直接展示出其效果,至于效率问题未测试,有兴趣的朋友可以测试下。

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭