namespace LangZi
{
/**//// <summary>
/// StringHelper 的摘要说明。
/// </summary>
public class StringHelper
{
public StringHelper()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
GetLength#region GetLength
/**//// <summary>
/// 返回包含中文字符的字符串长度
/// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位
/// </summary>
/// <param name="strSource">要统计长度的字符串变量</param>
/// <returns>字符串长度</returns>
public static int GetLength(string strSource)
{
Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled);
int nLength = strSource.Length;
for(int i=0; i<strSource.Length; i++)
{
if (regex.IsMatch(strSource.Substring(i,1)))
{
nLength++;
}
}
return nLength;
}
#endregion
}
}
匹配任何包含中文的字符串
regcn=/[/u4e00-/u9fa5]/;
匹配诸如“xxx-xxxxxxx”的电话号码:
regphone=/^[0-9]/-[0-9]$/;
手机号码:
regmobile=/^13[0-9]{8}/;
using System; using System.Text.RegularExpressions; namespace LangZi { /// <summary> /// StringHelper 的摘要说明。 /// </summary> public class StringHelper { public StringHelper() { // // TODO: 在此处添加构造函数逻辑 // } #region GetLength /// <summary> /// 返回包含中文字符的字符串长度 /// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位 /// </summary> /// <param name="strSource">要统计长度的字符串变量</param> /// <returns>字符串长度</returns> public static int GetLength(string strSource) { Regex regex = new Regex("[/u4e00-/u9fa5]+", RegexOptions.Compiled); int nLength = strSource.Length; for (int i = 0; i < strSource.Length; i++) { if (regex.IsMatch(strSource.Substring(i, 1))) { nLength++; } } return nLength; } #endregion } }
使用:
string source; int length; source = "123"; length = LanZi.StringHelper.GetLength(source); Console.WriteLine(length); // 3 source = "12叁"; length = LangZi.StringHelper.GetLength(source); Console.WriteLine(length); // 4 因为叁是中文,一个中文返回的长度是2
土人用最土的办法,以求实现自己的目标,看了银河兄的C#中的字符编码问题 一文,发现有更好更完善的方法:
using System; using System.Text; namespace LangZi { /// <summary> /// StringHelper 的摘要说明。 /// </summary> public class StringHelper { public StringHelper() { // // TODO: 在此处添加构造函数逻辑 // } #region GetLength /// <summary> /// 返回包含中文字符的字符串长度 /// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位 /// </summary> /// <param name="strSource">要统计长度的字符串变量</param> /// <returns>字符串长度</returns> public static int GetLength(string strSource) { return Encoding.GetEncoding("GB18030").GetBytes(strSource).Length; } #endregion }
public static int GetLength(string strSource) { return Regex.Matches(strSource, "[/u4e00-/u9fa5]").Count + strSource.Length; }
string str = "你好中国"; int length = str.ToCharArray().Length;