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#分页显示服务器上指定目录下的所有图片示例

    当我们需要在网页上展示大量的图片时,我们可以考虑使用分页展示。C#作为一种流行的编程语言,可以在服务器端实现这一功能。下面是一个详细的攻略,旨在帮助你实现在服务器上指定目录下的所有图片进行分页展示的功能。 目录结构 首先,我们需要在服务器上创建用于存储图片的目录,我们可以将其命名为“Images”。在“Images”目录下,我们需要再创建一个名为“Thumb…

    C# 2023年5月31日
    00
  • c#中LINQ的基本用法(一)

    首先我们来介绍一下“c#中LINQ的基本用法(一)”的完整攻略。本篇攻略将介绍LINQ的基础概念和语法。 什么是LINQ? LINQ(Language Integrated Query,语言集成查询)是一种结合了面向对象程序设计思想和关系数据库思想的查询技术。它允许使用类似SQL的语言(比如C#)来查询数据,既可以查询集合类型的数据,也可以查询数据库中的数据…

    C# 2023年6月1日
    00
  • MSSQL 2008 自动备份数据库的设置方法

    下面是详细讲解“MSSQL 2008 自动备份数据库的设置方法”的完整攻略: 1. 查看当前数据库的备份类型 在开始设置自动备份之前,需要先查看当前数据库的备份类型,以便确定需要设置的备份方式。可以通过以下代码在 SQL Server Management Studio 的查询窗口中执行来查看: USE master GO SELECT [name], re…

    C# 2023年6月2日
    00
  • efcore性能调优

    性能调优——EFCore调优 按下硬件、网络不提,我们单表从程序层面对系统的性能进行优化,翻来覆去无外乎三个方面 缓存 异步 sql本片文章,我们针对.net core web项目的ef core框架进行性能优化。 1. EF Core框架已经本地缓存机制memorycache,所以我们访问一个接口,二次访问的性能相比首次会提升一大截 2.尽可能的通过主键查…

    C# 2023年4月30日
    00
  • 在Blazor中使用Chart.js生成图表

    1. 在Blazor中使用Chart.js 首先,从Chart.js官方网站下载Chart.js库文件。推荐下载这个构建好的版本https://cdnjs.com/libraries/Chart.js,最新版是v4.2.1 在Blazor项目中把刚刚下载好的Chart.js放到wwwroot目录下。 在Blazor项目中的Pages文件夹下_Host.csh…

    C# 2023年4月18日
    00
  • c#互斥锁Mutex类用法介绍

    c#互斥锁Mutex类用法介绍 什么是互斥锁? 在多线程编程中,为了防止多个线程同时访问共享资源导致数据混乱的问题,需要用到互斥锁。互斥锁是一种同步方式,它保证在同一时间只有一个线程可以访问共享资源。 Mutex类的用法 在C#中,可以通过Mutex类实现互斥锁。使用Mutex类的步骤如下: 创建一个Mutex对象,可以通过Mutex类的构造函数来创建: M…

    C# 2023年5月15日
    00
  • 使用C# 判断给定大数是否为质数的详解

    使用C# 判断给定大数是否为质数的详解 判断一个大数是否为质数是一个常见的问题。早期的解决方式是通过试除法,即将该数不断除以比它小的所有正整数,如果在这些正整数中存在约数,那么这个数就不是质数。 但是,这种试除法效率极低,在判断大数时会消耗大量时间和资源。因此,我们需要更快速且高效的方式来判断大数是否为质数。 下面我们将介绍一种使用“Miller-Rabin…

    C# 2023年6月7日
    00
  • C#中使用CliWrap让命令行交互举重若轻

    CLIWrap是一个C#库,它允许我们在C#代码中调用命令行工具(例如,FFmpeg,ImageMagick等),并简化与这些命令行工具的交互。以下是使用CliWrap的C#代码,用于从命令行执行ffmpeg: using CliWrap; using CliWrap.Models; using System; using System.IO; using …

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