zoukankan      html  css  js  c++  java
  • 开发通用类 字符串截断篇

    /// <summary>
    /// 截断字符串
    /// </summary>
    /// <param name="source">源字符串</param>
    /// <param name="length">截取长度</param>
    /// <param name="isAddEllipsis">结尾是否带有省略号(省略号占用2个长度)</param>
    /// <returns></returns>
    public static string CutStringForString(string source, int length, bool isAddEllipsis)
    {
        // 空字符串
        if (string.IsNullOrEmpty(source))
        {
            return string.Empty;
        }
    
        // 长度不够
        char[] sourceArray = source.ToCharArray();
        if (sourceArray.Length <= length)
        {
            return source;
        }
    
        // 超长、截断
        string newStr = source.Substring(0, (isAddEllipsis ? length - 2 : length));
        if (isAddEllipsis)
        {
            newStr += "……";
        }
    
        return newStr;
    
    }
    
    /// <summary>
    /// 根据字节长度截取字符串
    /// </summary>
    /// <param name="source">源字符串</param>
    /// <param name="length">截取长度</param>
    /// <param name="isAddEllipsis">结尾是否带有省略号(省略号占用4个字节)</param>
    /// <returns></returns>
    public static string CutStringForByte(string source, int length, bool isAddEllipsis)
    {
        // 空字符串
        if (string.IsNullOrEmpty(source))
        {
            return string.Empty;
        }
    
        // 长度不够
        int sourceByteLength = 0;
        char[] sourceArray = source.ToCharArray();
        for (int i = 0; i < sourceArray.Length; i++)
        {
            if (Convert.ToInt32(sourceArray[i]) > 255)
            {
                sourceByteLength += 2;
            }
            else
            {
                sourceByteLength++;
            }
        }
        if (sourceByteLength <= length)
        {
            return source;
        }
    
        // 长度超长
        //如果结尾添加 … 则要在原本截取长度基础上减去2
        if (isAddEllipsis)
        {
            length = length - 4;
        }
        int k = 0;
        var newStr = new StringBuilder();
        sourceByteLength = 0;
        while (sourceByteLength < length)
        {
            newStr.Append(sourceArray[k]);
            if (Convert.ToInt32(sourceArray[k]) > 255)
            {
                sourceByteLength += 2;
            }
            else
            {
                sourceByteLength++;
            }
            k++;
        }
        if (isAddEllipsis)
        {
            newStr.Append("……");
        }
    
        return newStr.ToString();
    }
  • 相关阅读:
    C++学习笔记(十六):友元
    C++学习笔记(十五):异常
    C++学习笔记(十四):模板
    C++学习笔记(十三):类、包和接口
    C++学习笔记(十二):类继承、虚函数、纯虚函数、抽象类和嵌套类
    C++学习笔记(十一):void*指针、类型转换和动态内存分配
    C++学习笔记(十):类
    quartz 实现调度任务 SchedulerManager
    Session 活化与钝化 与tomcat钝化驱动器
    web listener
  • 原文地址:https://www.cnblogs.com/judgelee/p/2631315.html
Copyright © 2011-2022 走看看