/// <summary>
/// 截取中英文混合字符串(中文字符一个按两个字符算)
/// string aa = "1122我是中国人";
/// CnCutString(aa,12,"...") >> 1122我...
/// </summary>
/// <param name="original">原始字符串</param>
/// <param name="length">截取长度</param>
/// <param name="fill">截取串小于原始串时,尾部附加字符串</param>
/// <returns></returns>
public static String CnEnCutString(String original, Int32 length, String fill)
{
Regex CnRegex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
Char[] CharArray = original.ToCharArray();
Int32 tmplength = 0;
for (Int32 i = 0; i < CharArray.Length; i++)
{
tmplength += CnRegex.IsMatch(CharArray[i].ToString()) ? 2 : 1;
if (tmplength > length)
return original.Substring(0, i - fill.Length) + fill;
}
return original;
}
要加上命名空间:using System.Text.RegularExpressions;
转载于:https://www.cnblogs.com/kwongwah/archive/2008/05/23/1205995.html