c#完美截断字符串代码(中文+非中文)

C#完美截断字符串代码(中文+非中文)攻略

概述

在C#中,对一个字符串进行截断,即取其中一部分,是一个比较常见的操作。本文将介绍一种完美的字符串截断方法,支持中文和非中文的字符串。

方法

string SubstringSmart(string str, int length)
{
    if (string.IsNullOrEmpty(str))
    {
        return string.Empty;
    }

    int len = 0;
    var newStr = string.Empty;
    var charArr = str.ToCharArray();
    int strLength = charArr.Length;

    for (int i = 0; i < strLength && len < length; i++)
    {
        var item = charArr[i];

        if ((item >= 0x4e00 && item <= 0x9fbb) || (item >= 0xff00 && item <= 0xffef))
        {//中文或全角字符算2个字符
            len += 2;
        }
        else
        {
            len += 1;
        }

        if (len <= length)
        {
            newStr += item;
        }
    }

    return newStr;
}

代码解释

  • 如果输入的字符串为空,则直接返回一个空字符串;
  • 初始化变量len、newStr、charArr、strLength;
  • 通过ToCharArray()方法将字符串转换成字符数组,以便进行以下字符遍历和取值的操作;
  • 遍历字符数组,对于中文和全角字符,算作2个字符,其他字符算作1个字符;
  • 如果字符数组中的字符长度小于等于要截取的长度,则将字符串全部返回,否则截取指定长度并返回截取后的字符串。

示例说明

示例一

对于一个字符串"hello world",调用 SubstringSmart("hello world", 5)方法,预期得到的字符串返回结果为"hello"。

示例二

对于一个字符串"百度是一个非常好的网站",调用 SubstringSmart("百度是一个非常好的网站", 14)方法,预期得到的字符串返回结果为"百度是一个非常"。

结论

通过以上代码解释和示例说明,我们可以实现一种完美的字符串截断方法,支持中文和非中文字符串。这种方法可以应用在各种需要对字符串进行截取的场景中,例如在网页中对标题或者文章进行截断显示操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#完美截断字符串代码(中文+非中文) - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#操作注册表之Registry类

    有关于C#操作注册表的基本操作,我们可以使用C#自带的Registry类来实现。Registry类封装了创建、读取、修改、删除注册表中的键值等基本操作,并且提供了多个静态方法和属性,方便我们能够快速的实现对注册表的操作。 一、Registry类的命名空间和引用 在使用Registry类的时候,需要在代码文件中引用Registry类所在的命名空间。具体命名空间…

    C# 2023年6月7日
    00
  • C# .NET中Socket简单实用框架的使用教程

    C#.NET中Socket简单实用框架的使用教程 什么是Socket框架? Socket框架是一种网络编程模型,被广泛应用于各种网络通信应用程序的开发中,包括聊天工具、文件传输、视频会议等。Socket框架通过封装了底层的TCP/IP协议,提供了一种简单、灵活且高效的网络编程模型。通常情况下,使用Socket框架编写网络应用程序需要掌握C#语言和.NET框架…

    C# 2023年5月15日
    00
  • C#多线程之线程同步WaitHandle

    C#多线程之线程同步WaitHandle 在C#多线程编程中,当多个线程同时访问同一个资源时,就要用到线程同步技术。WaitHandle就是其中一种线程同步机制。本文将详细讲解WaitHandle的用法。 什么是WaitHandle WaitHandle是一个抽象基类,定义了等待时的信号通知方式。它有两个主要的实现类:AutoResetEvent和Manua…

    C# 2023年6月7日
    00
  • C#中怎么将一个List转换为只读的

    将一个List转换为只读的可以使用ReadOnlyCollection<T>来实现。ReadOnlyCollection<T>是IList<T>接口的一个只读实现,它只提供了读取元素的方法,不提供添加、修改或删除元素的方法,从而确保了List不可变。 下面是将一个List转换为只读的示例代码: List<int&gt…

    C# 2023年6月6日
    00
  • asp.net程序编译调试时偶尔出现访问被拒绝的错误的解决方法

    当我们在使用asp.net程序进行编译和调试时,有时候会出现访问被拒绝的错误,这可能是由于权限设置不当或操作系统安全设置问题造成的,下面我们来讲解具体的解决方法。 一、检查应用程序池的身份验证设置 访问被拒绝的错误有时可能是由于应用程序池的身份验证设置没有正确配置造成的,我们可以通过以下步骤检查应用程序池的身份验证设置进行解决: 打开Internet Inf…

    C# 2023年5月15日
    00
  • 基于C#编写经理评分系统

    基于C#编写经理评分系统攻略 系统简介 经理评分系统是一种基于评测流程的评分系统,可以用来对员工的工作表现进行评分,作为考核绩效的依据。本系统基于C#编写,采用MVC架构,前端使用Bootstrap框架。 系统流程 登录/注册 用户输入用户名和密码,进行登录或者注册。 创建评分表单 登录后进入创建评分表单页面,用户可以定义评分项、评分标准等。 分配工作任务 …

    C# 2023年6月7日
    00
  • C#数组排序的两种常用方法

    下面是关于C#数组排序的两种常用方法的完整攻略。 方法一:使用Array.Sort方法排序 Array.Sort是.NET Framework中的一个静态方法,可以对数组进行升序或降序排列。这个方法的使用非常简单,直接调用即可。 步骤 定义一个数组 int[] numbers = { 5, 2, 1, 3, 4 }; 使用Array.Sort方法对数组进行排…

    C# 2023年6月1日
    00
  • ASP.NET Core 6框架揭秘实例演示之如何承载你的后台服务

    ASP.NET Core 6是一款高效、开源的Web应用程序框架,支持多平台和云端部署,且拥有可扩展的体系结构,非常适合构建现代化的Web应用程序。本文将基于该框架,详细讲解如何承载你的后台服务,针对不同的应用场景,提供多条实例演示。 一、使用ASP.NET Core 6承载后台任务 在Web应用程序中,有很多后台任务需要执行。例如,订阅事件、启用定时任务、…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部