超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)

作者:wdc 时间:2021-11-13 20:37:55 

正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。如下图:

超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)

所以应该用以下代码来获取长度:


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;
   }

运行结果如下图:

超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)

也可以用这个获取长度:


int i = System.Text.Encoding.Default.GetBytes(s).Length;

通过系统提供函数我们就可以获取中文的真实长度,是不是很简单

来源:http://www.cnblogs.com/haibing0107/p/5825600.html

标签:C#字符串
0
投稿

猜你喜欢

  • MTK Android平台开发流程

    2023-06-23 08:59:11
  • 详解C#多线程之线程同步

    2023-10-09 02:23:21
  • Android事件冲突解决悬浮窗拖拽处理方案

    2023-12-17 01:51:17
  • 关于springboot集成swagger及knife4j的增强问题

    2023-11-29 00:43:50
  • java高并发锁的3种实现示例代码

    2022-05-23 16:45:47
  • Java设计模式之抽象工厂模式浅析讲解

    2022-08-08 18:26:47
  • mybatis中批量插入的两种方式(高效插入)

    2023-09-16 22:21:07
  • 结合线程池实现apache kafka消费者组的误区及解决方法

    2023-08-06 15:40:31
  • java内存优化的方法总结

    2022-12-01 22:25:20
  • spring boot配置读写分离的完整实现步骤

    2022-02-15 21:23:11
  • Java编程实现向文本文件中读取数据之Scanner用法示例

    2022-08-01 03:38:57
  • 使用@ConfigurationProperties实现类型安全的配置过程

    2023-07-01 00:26:05
  • 浅谈Java封装、继承、多态特性

    2023-10-09 13:59:35
  • SpringBoot文件上传大小设置方式(yml中配置)

    2021-09-21 09:26:47
  • Java基于分治算法实现的棋盘覆盖问题示例

    2021-07-17 14:05:16
  • C#实现餐厅管理系统

    2023-11-27 16:05:05
  • 详解Java高并发编程之AtomicReference

    2023-12-08 14:29:39
  • android多线程断点下载-带进度条和百分比进度显示效果

    2022-03-20 14:30:43
  • 自己实现Android View布局流程

    2022-07-10 22:20:26
  • C#中如何利用正则表达式判断字符

    2023-07-29 12:19:30
  • asp之家 软件编程 m.aspxhome.com