zoukankan      html  css  js  c++  java
  • C#截取字符串长度方法

    方法一、

            /// <summary>
            /// 截取指定长度的字符串
            /// </summary>
            /// <param name="str">要截取的字符串</param>
            /// <param name="len">要截取的长度</param>
            /// <param name="flag">截取后是否加省略号(true加,false不加)</param>
            /// <returns></returns>
            public static string CutString(string str, int len, bool flag)
            {
                string _outString = "";
                int _len = 0;
                for (int i = 0; i < str.Length; i++)
                {
                    if (Char.ConvertToUtf32(str, i) >= Convert.ToInt32("4e00", 16) && Char.ConvertToUtf32(str, i) <= Convert.ToInt32("9fff", 16))
                    {
                        _len += 2;
                        if (_len > len)//截取的长度若是最后一个占两个字节,则不截取
                        {
                            break;
                        }
                    }
                    else
                    {
                        _len++;
                    }
    
    
                    try
                    {
                        _outString += str.Substring(i, 1);
                    }
                    catch
                    {
                        break;
                    }
                    if (_len >= len)
                    {
                        break;
                    }
                }
                if (str != _outString && flag == true)//判断是否添加省略号
                {
                    _outString += "...";
                }
                return _outString;
            }


    方法二、

            /// <summary>
            /// 截取指定长度的字符串
            /// </summary>
            /// <param name="str">要截取的字符串</param>
            /// <param name="len">要截取的长度</param>
            /// <param name="flag">截取后是否加省略号(true加,false不加)</param>
            /// <returns></returns>
            public static string CutString(string str, int len, bool flag)
            {
                System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
                byte[] bts = ascii.GetBytes(str);
                int _len = 0;
                string _outString = "";
                for (int i = 0; i < bts.Length; i++)
                {
                    if ((int)bts[i] == 63)//两个字符
                    {
                        len += 2;
                        if (_len > len)//截取的长度若是最后一个占两个字节,则不截取
                        {
                            break;
                        }
                    }
                    else
                    {
                        len += 1;
                    }
    
                    try
                    {
                        _outString += str.Substring(i, 1);
                    }
                    catch
                    {
                        break;
                    }
    
                    if (_len >= len)
                    {
                        break;
                    }
                }
                if (str != _outString && flag == true)//判断是否添加省略号
                {
                    _outString += "...";
                }
                return _outString;
            }

    方法三、

            /// <summary>
            /// 截取指定长度的字符串
            /// </summary>
            /// <param name="str">要截取的字符串</param>
            /// <param name="len">要截取的长度</param>
            /// <param name="flag">截取后是否加省略号(true加,false不加)</param>
            /// <returns></returns>
            public static string CutString(string str, int len, bool flag)
            {
                if (str == null || str.Length == 0 || len <= 0)
                {
                    return string.Empty;
                }
    
                int l = str.Length;
    
                #region 计算长度
                int clen = 0;
                while (clen < len && clen < l)
                {
                    //每遇到一个中文,则将目标长度减一。
                    if ((int)str[clen] > 128)
                    {
                        len--;
                    }
                    clen++;
                }
                #endregion
    
                if (clen < l)
                {
                    return flag ? str.Substring(0, clen) + "..." : str.Substring(0, clen);
                }
                else
                {
                    return str;
                }
            }
  • 相关阅读:
    linux crontab 常用时间设置
    远程连接 mysql 数据库连接不上的解决方案
    Caffe搭建:Ubuntu14.04 + CUDA7.0 + opencv3.0 + Matlab2014A
    Ubuntu中sublime和Foxit Reader不能使用中文输入法解决方案
    python学习:python的星号(*)和双星号(**)用法
    Latex使用:在latex中添加算法模块
    Torch,Tensorflow使用: Ubuntu14.04(x64)+ CUDA8.0 安装 Torch和Tensorflow
    Caffe使用: Ubuntu 14.04(x64) 从cuda 7.0 升级到 cuda8.0
    Git使用:Linux(Ubuntu 14.04 x64)下安装Git并配置连接GitHub
    Git使用:安装,使用及常用命令整理
  • 原文地址:https://www.cnblogs.com/lollipop/p/2687158.html
Copyright © 2011-2022 走看看