首页 > 编程语言 >C# 获取字符串自动换行

C# 获取字符串自动换行

时间:2023-07-12 16:33:53浏览次数:37  
标签:count int 字节 C# 换行 chr 字符串 string

    ```

    //判断是否是汉字
    public static bool IsChinese(char chr)
    {
        return (int)chr > 0x4E00 && (int)chr < 0x9FA5;
    }

    /// <summary>
    /// 截取字符串,不限制字符串长度
    /// </summary>
    /// <param name="str">待截取的字符串</param>
    /// <param name="len">每行的长度,多于这个长度自动换行</param>
    /// <returns></returns>
    public static string GetStringByLen(string str, int len)
    {
        //正常情况下,我们是直接去string的length的,但是汉字是有多个字节的
        StringBuilder sb = new StringBuilder();
        int count = 0;//统计个数
        for (int i = 0; i < str.Length; i++)
        {
            char chr = str[i];
            count += GetStrLength(chr.ToString(), Encoding.UTF8);
            if (count == len)
            {
                sb.Append(chr + "\r\n");
                count = 0;
            }
            else if (count > len)
            {
                sb.Append("\r\n" + chr);
                count = GetStrLength(chr.ToString(), Encoding.UTF8);
            }
            else
            {
                sb.Append(chr);
            }
        }
        return sb.ToString();
    }

    /// <summary>
    /// 获取字符串长度
    /// </summary>
    /// <param name="str">字符串</param>
    /// <param name="encoding">编码格式</param>
    /// <returns></returns>
    public static int GetStrLength(string str,Encoding encoding)
    {
        //默认字节长度:中文占两个字节,其他占一个字节
        //utf-8字节长度:中文占三个字节,其他占一个字节
        return encoding.GetByteCount(str);
    }

    /// <summary>
    /// 根据字符串长度拆成集合
    /// </summary>
    /// <param name="value"></param>
    /// <param name="len"></param>
    /// <returns></returns>
    public static List<string> GetStringList(string value,int len = 30)
    {
        var strings = GetStringByLen(value,len).Split("\r\n").ToList();
        strings.RemoveAll(t => string.IsNullOrEmpty(t));
        return strings;
    }
    ```

标签:count,int,字节,C#,换行,chr,字符串,string
From: https://www.cnblogs.com/nuomibaibai/p/17547848.html

相关文章

  • gRPC
    gRPC的特征:基于HTTP/2,继而提供了连接多路复用、Body和Header压缩等机制。可以节省带宽、降低TCP链接次数、节省CPU使用和延长电池寿命等。支持主流开发语言(C,C++,Python,PHP,Ruby,NodeJS,C#,Objective-C、Golang、Java)IDL(InterfaceDefinitionLanguage)层使用了......
  • plc200转以太网在建材矿粉磨系统中的应用案例
    内容摘要上位机与S7-300PLC通信采用以太网通信,通讯模块采用捷米特ETH-S7300-JM01以太网通讯模块,捷米特ETH-S7300-JM01通讯模块直接插到CPU315-2DP的DP口上。 项目介绍立磨PLC控制系统:立磨是一种理想的大型粉磨设备,广泛应用于水泥、电力、冶金、化工、非金属矿等行业。它集......
  • PostgreSQL(pg) /MYSQL数据库,使用递归查询(WITH RECURSIVE)功能来实现获取指定菜单ID的
      PostgreSQL/MYSQL数据库,使用递归查询(WITHRECURSIVE)功能来实现获取指定菜单ID的所有下级菜单数据。下方用例是假设菜单表menu的改成自己的表即可WITHRECURSIVEmenu_hierarchyAS(SELECTid,name,parent_idFROMmenuWHEREid=<指......
  • 你信不信,只要学几天javascript就可以使用纯原生实现五星评分效果 【附完整代码】
    ......
  • PCoA的局限性
    PCoA(主坐标分析)图是一种常用的多元统计分析方法,用于展示样本之间的相似性或差异性。然而,它也有一些局限性:定性分析:PCoA图只能提供定性的分析结果,无法提供定量的差异程度。因此,在分析PCoA图时,我们只能大致了解样本之间的相似性或差异性,而无法精确计算差异程度。数据预处理:在......
  • StringBuilder()类、chatAt()、toString()方法
    Java1.StringBuffer和StringBuilder类和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。在使用StringBuffer类时,每次都会对StringBuffer对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使......
  • 统计平台广告推送工具支持百度、51拉、CNZZ 用法详解
    此软件用于伪造站长统计的搜素关键词,可以模拟百度、360、搜狗等搜索引擎来路 支持自定义刷词次数、多线程支持自定义线程数,速度更快 支持指定网址推广,带来更精确的网站IP来路 一键导入几十万个网站,支持TXT文件导入一行一个网址即可 5.8版界面预览: 可以模拟电脑......
  • k8s集群node NotReady处理流程-->kubelet状态error,并伴有报错:kubelet.service has mor
    k8s集群nodeNotReady处理流程-->kubelet状态error//20230712集群有节点NotReadykubelet状态error,并伴有报错:kubelet.servicehasmorethanoneExecStart=setting,whichisonlyallowedforType=oneshotservices.Refusing在此记录一下解决流程解决流程问题定位:使......
  • BMC开发六 - 编译镜像
    OpenBMC编译镜像1.开发环境OS: Ubuntu18.04,20.04,22.04(LTS)Fedora36,37AlmaLinux8.7,9.1DebianGNU/Linux11.x(Bullseye)OpenSUSELeap15.315.4SoftwareRequirementsGit1.8.3.1orgreatertar1.28orgreaterPython3.8.0orgreaterGNUmake4.......
  • Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRange
    http://c.biancheng.net/view/924.html所谓复制数组,是指将一个数组中的元素在另一个数组中进行复制。本文主要介绍关于 Java 里面的数组复制(拷贝)的几种方式和用法。在Java中实现数组复制分别有以下4种方法:Arrays类的copyOf()方法Arrays类的copyOfRange()方法Syst......