如何得到字符串的字节长度和按照字节长度截取

oceanju 2004-06-23 05:03:14
比如字符串"你好a",我想得到其字节长度5,而不是字符串长度3,请问用C#如何获取。
另外,如果我要按照字节来截取如何实现,比如"你好a",截取前4个字节,是"你好",但是如果截取前3个字节,我希望截取到"你",也就是不能把"好"这个字拆开截取,也即如果发现要截取的字节正好在一个汉字上,则不截取此汉字
...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
juqiang 2004-07-02
  • 打赏
  • 举报
回复
to zhzuo,这么古老代码你也有?给我发一份吧!我得早找不到了。。。
marvelstack 2004-06-23
  • 打赏
  • 举报
回复
//取字符串长度
s = "iam方枪枪";
int len = s.Length;//will output as 6
byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
len = sarr.Length;//will output as 3+3*2=9
codeangel 2004-06-23
  • 打赏
  • 举报
回复
看看下面的,给你个思路吧。
private String GetPin(String mystr)
{
String tt;
if ((mystr.ToUpper().CompareTo("A")>=0 &&
mystr.ToUpper().CompareTo("Z")<=0)|| (mystr.ToUpper().CompareTo("0")>=0 &&
mystr.ToUpper().CompareTo("9")<=0))
{
tt=mystr;
return tt;
}
else if (Asc(mystr) < Asc("啊")|| (Asc(mystr) >= Asc("匝"))
{
{
tt="z";
return tt;
}

else
{
tt=mystr;
return tt;
}
}
juqiang 2004-06-23
  • 打赏
  • 举报
回复
agree to 大象
GetBytes()之后,针对每个byte进行判断,是否在4e-9f之间,是否在00-a5之间,这两个段,其实就是汉字的区码和位码。这方面的资料,可以找从前dos下作汉字编程的代码。
strawwan 2004-06-23
  • 打赏
  • 举报
回复
int len = System.Text.Encoding.Default.GetByteCount("你好a");
GZ第二个问题!
CMIC 2004-06-23
  • 打赏
  • 举报
回复
汉字范围4E00-9FA5
CMIC 2004-06-23
  • 打赏
  • 举报
回复
byte[] mBytes=
System.Text.Encoding.GetEncoding("2312").GetBytes("你好a");
System.Text.Encoding.GetEncoding("2312").GetString(mBytes,0,2);


如果发现要截取的字节正好在一个汉字上,则不截取此汉字
-----------------------------------------
这个不知道怎么判断,有个想法可以根据Ascii码判断。

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧