C#中如何获取一个字符串的实际字符数
2010-11-25 15:37
253 查看
在包含中文的字符串处理时,除了裁切固定长度的操作之外,有时也需要获取一个字符串的实际字符数,比如我们限制输入框字符数的时候。而C#提供的string.Length属性却无法满足我们的要求,由此,便有了下面这个方法:
在写上面那个方法时,我突然想到,如果把字符串转换成byte[]是不是也能获取到这个长度呢?姑且试试:
/// <summary> /// 获取字符串长度。与string.Length不同的是,该方法将中文作 2 个字符计算。 /// </summary> /// <param name="str">目标字符串</param> /// <returns></returns> public static int GetLength(string str) { if (str == null || str.Length == 0) { return 0; } int l = str.Length; int realLen = l; #region 计算长度 int clen = 0;//当前长度 while (clen < l) { //每遇到一个中文,则将实际长度加一。 if ((int)str[clen] > 128) { realLen++; } clen++; } #endregion return realLen; }
在写上面那个方法时,我突然想到,如果把字符串转换成byte[]是不是也能获取到这个长度呢?姑且试试:
public static int GetLength_Obsoleted(string str) { if (str == null || str.Length == 0) { return 0; } byte[] data = Encoding.Default.GetBytes(str); return data.Length; }
这个方法也能够让我们如愿取到字符串长度。但这两个方法孰优孰劣呢?我使用了一句110字符长度的中文进行500万次调用测试,GetLength 的执行效率几乎是 GetLength_Obsoleted 的 4 倍! 转载文章,仅供本人使用方便。转载地址:http://udnz.com/Article/CutStr.aspx
相关文章推荐
- C#中如何获取一个字符串的实际字符数
- C#中如何获取一个字符串的实际字符数
- c#一个字符串中如何去掉相同的字符
- c#一个字符串中如何去掉相同的字符
- 如何查找一个字符串中重复次数最多的字符,返回这个字符的个数和字符
- php------如何求解字符串“中国2北333京”的字符数(一个中文一个字符),并找到第四个字符“北”
- 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。
- C#中如何判断一个字符是汉字
- 从终端获取一个字符串,分别统计当中大写字母、小写字母、数字及其他字符的个数。
- PHP获取一个字符串中间一部分字符的方法
- 在java中如何用键盘输入一个数,字符,字符串
- C# 3.0 Cookbook:一、字符与字符串处理(5):把一个字符串与另一个字符串的头部或尾部作比较
- C# 获取一个独一无二的字符串 GUID
- 判断一个字符串同时出现几个字符的C#版本和JS版本
- C#中如何获取一个二维数组的两维长度,即行数和列数?
- 如何判断一个数组中是否包含一个字符或字符串
- C# 下面的代码示例演示如何结束异步操作以获取请求的流,然后开始一个请求以获取响应。....
- C# 如何用多字符分割字符串
- php面试题:如何知道一个未知长度的字符串哪个字符出现的次数最多?(字符串可由字母,数字及其他字符组成)请写出代码。
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何实现从字符串中提取需要的字符并赋值给指定单元格内