超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)
更新时间:2018年03月13日 16:30:03 投稿:wdc
正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的
正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。如下图:
所以应该用以下代码来获取长度:
private void button1_Click(object sender, EventArgs e) { string s = textBox1.Text; int i = GetLength(s); MessageBox.Show(i.ToString()); } public static int GetLength(string str) { if (str.Length == 0) return 0; ASCIIEncoding ascii = new ASCIIEncoding(); int tempLen = 0; byte[] s = ascii.GetBytes(str); for (int i = 0; i < s.Length; i++) { if ((int)s[i] == 63) { tempLen += 2; } else { tempLen += 1; } } return tempLen; }
运行结果如下图:
也可以用这个获取长度:
int i = System.Text.Encoding.Default.GetBytes(s).Length;
通过系统提供函数我们就可以获取中文的真实长度,是不是很简单
相关文章
C#基于Extension Method(扩展方法)获得文件大小的方法
这篇文章主要介绍了C#基于Extension Method(扩展方法)获得文件大小的方法,实例分析了C#扩展方法的定义与文件操作的相关技巧,需要的朋友可以参考下2015-06-06C#将HashTable中键列表或值列表复制到一维数组的方法
这篇文章主要介绍了C#将HashTable中键列表或值列表复制到一维数组中方法,涉及C#操作HashTable的相关技巧,需要的朋友可以参考下2015-04-04浅谈C#中ToString()和Convert.ToString()的区别
本文介绍了ToString()和Convert.ToString()的使用方法,他们之间的区别,以及从object到string的转换方法,希望对学习C#编程的你有所帮助2016-11-11
最新评论