CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求以一定字节长度拆分含有汉字及英文的字符串方法

楼主hykx(寒夜看雪)2006-03-07 11:38:16 在 .NET技术 / C# 提问

字符串示例:CSDN论坛  
   
  字母算1字节,汉字算2字节  
   
  拆分长度4或5都将拆分为两个字符串:CSDN/论坛  
  拆分长度为6则结果为:CSDN论/坛  
   
  求高效的方法 问题点数:100、回复次数:7Top

1 楼flygoldfish(长江支流)回复于 2006-03-07 11:47:27 得分 20

一个一个的取,然后   与A-Z的ASCII比Top

2 楼lovvver(ElephantTalk.Bright)回复于 2006-03-07 12:03:55 得分 20

给你一个判断是单字节还是双字节的判断方法,然后通过这个方法,就可以做到你要求的:  
  string   str   =   "a";//or   str   =   "好";  
  byte[]   bt   =   System.Text.Encoding.Default   .GetBytes   (str);  
  bt.Length=字节数Top

3 楼hykx(寒夜看雪)回复于 2006-03-07 12:29:42 得分 0

这些我做过的,只是不知道是不是最好的方法,想求最好的方法Top

4 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2006-03-07 12:40:26 得分 0

private   string   SplitString(string   temp,int   length)  
  {  
  byte[]   b   =   Encoding.GetEncoding("gb2312").GetBytes(temp);  
  if   (length   <=   0   ||   length   >   b.Length)  
  {  
  return   null;  
  }  
  byte[]   result   =   new   byte[length];  
  Array.Copy(b,0,result,0,length);  
  string   s   =   temp.Substring(0,length);  
  if   (s   ==   Encoding.GetEncoding("gb2312").GetString(result))  
  {  
  return   s;  
  }  
  else  
  {  
  return   temp.Substring(0,length-1);  
  }  
  }  
   
   
  string   str   =   "CSDN论坛";  
  Console.WriteLine("0:"   +   SplitString(str,0));  
  Console.WriteLine("4:"   +   SplitString(str,4));  
  Console.WriteLine("5:"   +   SplitString(str,5));  
  Console.WriteLine("6:"   +   SplitString(str,6));  
  Console.WriteLine("10:"   +   SplitString(str,10));Top

5 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2006-03-07 12:41:15 得分 0

只是随便写的  
  呵呵  
  我也不知道效率如何  
  如果字符串不是很大  
  效率差别应该可以不计Top

6 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2006-03-07 12:50:03 得分 40

不好意思  
  上面的有问题  
  private   string   SplitString(string   temp,int   length)  
  {  
  byte[]   b   =   Encoding.GetEncoding("gb2312").GetBytes(temp);  
  if   (length   <=   0   ||   length   >   b.Length)  
  {  
  return   null;  
  }  
  byte[]   result;  
  if   (length%2   ==   0   ||   b[length-1]   ==   0)  
  {  
  result   =   new   byte[length];  
  Array.Copy(b,0,result,0,length);  
  }  
  else  
  {  
  result   =   new   byte[length-1];  
  Array.Copy(b,0,result,0,length-1);  
  }  
  return   Encoding.GetEncoding("gb2312").GetString(result);  
  }Top

7 楼lovvver(ElephantTalk.Bright)回复于 2006-03-07 13:02:30 得分 20

如果只截取一次,就简单。  
  如:string   str   =   "abc好de的f人民ghijk";  
  int   i_cut   =   10;  
   
  你就想对str截取10个长度的字符串:  
  string   strCut   =   str.Substring(0,i_cut);  
  int   i_RealLength   =   System.Text.Encoding.Default   .GetBytes   (strCut).Length;  
  然后比较i_cut和i_RealLength的差值,(i_cut=10,i_RealLength=13)  
  你就在strCut上减3个字符,。。。当差别字符数在某一数字之内,可以逐个判断处理。Top

相关问题

  • 如何取字符串(含汉字)中的字节数?
  • 字符串拆分
  • 字符串拆分
  • 怎么判断一个字符串大于70字节?如果大于后拆分为多个字符串?
  • 如何得到一个汉字+字母字符串的长度(字节个数)?
  • 如何拆分字符串?
  • 拆分字字符串???
  • 关于*字符串拆分*
  • 字符串的拆分
  • 拆分一个字符串

关键词

  • csdn
  • 字符串
  • 拆分
  • splitstring
  • 长度
  • reallength
  • 方法
  • strcut
  • getencoding
  • length

得分解答快速导航

  • 帖主:hykx
  • flygoldfish
  • lovvver
  • lovefootball
  • lovvver

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo