asp.net中如何计算中英文混合字符串长度
方法一
/// <summary> /// 获取中英文混合字符串的文字长度(1个英文占1个长度,1个汉字占2个长度) /// </summary> /// <param name="stringWithEnglishAndChinese">中英文混合的字符串</param> /// <returns>字符串长度(1个英文占1个长度,1个汉字占2个长度)</returns> public int GetEnglishLength(string stringWithEnglishAndChinese) { int lng = 0; for (int i = 0; i < stringWithEnglishAndChinese.Length; i++) { byte[] b = System.Text.Encoding.Default.GetBytes(stringWithEnglishAndChinese.Substring(i,1)); if (b.Length > 1) lng += 2; else lng += 1; } return lng; }
方法二
/// <summary> /// 获取中英文混合字符串的文字长度(1个英文占1个长度,1个汉字占2个长度) /// </summary> /// <param name="stringWithEnglishAndChinese">中英文混合的字符串</param> /// <returns>字符串长度(1个英文占1个长度,1个汉字占2个长度)</returns> public int GetStringLengthWithChinese(string strWithEnglishAndChinese) { int lng = 0; Regex reg = new Regex("[\u4E00-\u9FA5]"); char[] chrs = strWithEnglishAndChinese.ToCharArray(); foreach (char c in chrs) { if (reg.IsMatch(c.ToString())) { lng += 2; } else { lng += 1; } } return lng; }