• 按字节剪切文章标题


      在做Web开发时,我们经常需要对过长的文章标题剪切,一般剪切方法是按字符数剪切,出现中文与英文标题会出现长短不一。为此写了一个按照字节剪切字符串的工具方法。

     /// <summary>
            /// 按字节剪切字符串的方法
            /// </summary>
            /// <param name="content"> 需要剪切的内容 </param>
            /// <param name="maxLength"> 需要显示的最大长度 </param>
            /// <returns> 剪切后的字符串 </returns>
            public static string SubStringByByte(string content, int maxLength)
            {
                if (GetBytelenght(content) > maxLength)
                {
                    return content.Substring(0, GetSubLenth(content, maxLength)) + "....";
                }
                return content;
            }
    
            /// <summary>
            /// 获取字符串的字节长度
            /// </summary>
            /// <param name="content"> 字符串 </param>
            /// <returns> 字节长度 </returns>
            public static int GetBytelenght(string content)
            {
                if (string.IsNullOrWhiteSpace(content)) return 0;
                byte[] bytestr = Encoding.Unicode.GetBytes(content);
                int j = 0;
                for (int i = 0; i < bytestr.GetLength(0); i++)
                {
                    if (i % 2 == 0)
                    {
                        j++;
                    }
                    else
                    {
                        if (bytestr[i] > 0)
                        {
                            j++;
                        }
                    }
                }
                return j;
            }
    
            /// <summary>
            /// 获取需要剪切的Index
            /// </summary>
            /// <param name="content"> 字符串 </param>
            /// <param name="max"> 需要显示最大字节数 </param>
            /// <returns> 需要剪切的Index </returns>
            public static int GetSubLenth(string content, int max)
            {
                if (string.IsNullOrWhiteSpace(content)) return 0;
                byte[] bytestr = Encoding.Unicode.GetBytes(content);
                int j = 0;
                int i = 0;
                for (; i < bytestr.GetLength(0); i++)
                {
                    if (i % 2 == 0)
                    {
                        j++;
                    }
                    else
                    {
                        if (bytestr[i] > 0)
                        {
                            j++;
                        }
                    }
                    if (j == max)
                    {
                        return i / 2;
                    }
                }
                return i / 2;
            }
        }

      调用方法:

      

        string content = "dfsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa阿斯顿发送的发顺丰";
                string content1 = "1231231312三四五六31231231213123123123123123123一二三四五六七八九十";
                int maxLenth = 40;
                Console.WriteLine(SubStringByByte(content, maxLenth));
                Console.WriteLine(SubStringByByte(content1, maxLenth));
    
                Console.ReadKey();

      显示结果:

  • 相关阅读:
    Documentum之基础(1)
    tomcat部署项目,war包问题[转]
    AD与LDAP区别
    Microsoft Visual Studio2010--此时无足够的可用内存,无法满足操作的预期要求,可能是由于虚拟地址空间碎片造成的。请稍后重试。
    Oracle 11g服务器安装详细步骤
    Oracle 11g 密码永不过期设置
    oracle 11g dbf数据文件从C盘迁移到D盘
    Swift 简介
    0Day 密码重置dede阿帕奇强制安装
    PS抠图教程_抠图小技巧_常用抠图小技巧_图片结构与配色
  • 原文地址:https://www.cnblogs.com/dyfzwj/p/2655797.html
Copyright © 2020-2023  润新知