请教c#中如何确定含中文的字符串的长度(中文算两个字符),谢谢.

sumrai 2002-08-29 02:15:42
请问:
在c#中确定一个包含中文的字符串的长度?
有没有这样的函数或例子?
例如string str = "中国人民123";
这个字符串,
我想得到的长度是11,即汉字当两个字符.
str.length属性,但它只能把汉字的长度算成1,求出来是7.
不至于要转换成字符数组,然后判断每个字符的ascii码吧,
那样就faint了.
谢谢了.
...全文
312 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DragonFly-9 2002-08-29
  • 打赏
  • 举报
回复
同意xhan2000,我都是这么用的
hillfree 2002-08-29
  • 打赏
  • 举报
回复
同意xhan2000。

因为在.NET中都是才有Unicode,所以汉字和字符都占2个字节。

建议采用第一种方式,即优雅,又简洁。

private int GetBytes(String str)
{
byte[] mybyte=System.Text.Encoding.Default.GetBytes(str);
return mybyte.Length;
}

------------------
Think and Thank
xhan2000 2002-08-29
  • 打赏
  • 举报
回复
还可以

public double CnLen(string str)
{
ASCIIEncoding n=new ASCIIEncoding();
byte [] mybyte=n.GetBytes(str);
double len=str.Length;
for(int i=0;i<str.Length;i++)
{
if(mybyte[i]==63)
{
len=len+1;
}
}
return len/2;
// int temp;
// double len=str.Length;
// for(int i=0;i<str.Length;i++)
// {
// temp=(int)str[i];
// if(temp<0)
// {
// temp+=65536;
// }
// if(temp>255)
// {
// len+=1;
// }
// }
// return len/2;
}
xhan2000 2002-08-29
  • 打赏
  • 举报
回复
有好几种方式

建议

byte[] mybyte=System.Text.Encoding.Default.GetBytes(str);

mybyte.Length

110,566

社区成员

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

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

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