请选择 进入手机版 | 继续访问电脑版

无忧编程_ASP.NET  / C# / PHP 程序员的软件世界

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 58|回复: 0

c#获取带有中文汉字的字符串长度的方法代码

[复制链接]

272

主题

299

帖子

1214

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1214
发表于 2017-12-13 16:43:33 | 显示全部楼层 |阅读模式
c#获取带有中文汉字的字符串长度的方法代码
不知道大家注意没,用c#下自带的str.Length方法获得字符串str长度的时候,返回的总是字符的个数,但是如果字符串中包含汉字的话,一个汉字是占两个字符长度的,获取的长度值就有了问题。
解决方案:
正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。如下图:
826232-20160831134309136-208125538.png

所以应该用以下代码来获取长度:
[C#] 纯文本查看 复制代码
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;
        }
运行结果如下图:
826232-20160831134448449-1441875376.png

也可以用这个获取长度:
[C#] 纯文本查看 复制代码
int i = System.Text.Encoding.Default.GetBytes(s).Length;

windows .net(C#+MSSQL) linux(php+mysql)  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软件编程 Inc.  

GMT+8, 2018-1-24 15:41 , Processed in 0.259853 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表