截取中英文混合字符串

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

posted on 2008-05-23 19:43  Kwongwah  阅读(288)  评论(0编辑  收藏  举报