我的一个公用方法,是用来截取文字标题的/// <summary>
    /// 字符串截取
    /// </summary>
    /// <param name="str">需要截取的字符串</param>
    /// <param name="strLen">截取长度</param>
    /// <returns></returns>
    public static string GetShortStr(string str, int strLen)
    {
        
        if (str.Length < strLen)//如果输入的字符串长度小于指定的长度
        {
            str = str.Substring(0, str.Length);//字符长度大于字符长度
        }
        else
        {
            str = str.Substring(0, strLen) + "...";
        }
        return str;
    }设定了截取字符个数,在中文情况下没问题,在英文标题情况下,明显比中文短了很多。
比如截取6个字符:【新闻中心】
1.我是某某某的..
2.Member...
 用正则如何修改?

解决方案 »

  1.   

    public static string GetFirstString(string stringToSub, int length)
                {
                    Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
                    char[] stringChar = stringToSub.ToCharArray();
                    StringBuilder sb = new StringBuilder();
                    int nLength = 0;
                    bool isCut = false;
                    for (int i = 0; i < stringChar.Length; i++)
                    {
                      
                        if (regex.IsMatch((stringChar[i]).ToString()))
                        {
                            sb.Append(stringChar[i]);
                            nLength += 2;
                        }
                        else
                        {
                            sb.Append(stringChar[i]);
                            nLength = nLength + 1;
                        }
                        if (nLength >= length)
                        {
                            isCut = true;
                            break;
                        }
                       
                    }
                    if (isCut)
                        return sb.ToString() + "..";
                    else
                        return sb.ToString();
                }