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

yizhihongxing

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日

相关文章

  • 详解ASP.NET Razor 语法

    ASP.NET Razor 是一种基于类 HTML 文件的标记语言,它以简单、清晰和易于使用而闻名。本攻略将详细讲解 Razor 语法,以帮助开发人员理解和使用 Razor。 Razor基础 变量 Razor 可以使用 @ 符号来定义变量,比如: @{ var message = "Hello World!"; } 定义完变量之后,就可以…

    C# 2023年5月31日
    00
  • 简单介绍SQL Server中的自旋锁

    SQL Server是一种关系型数据库管理系统,其管理和保护数据的并发访问性是非常重要的。为了满足这个需求,SQL Server使用了锁机制,其中自旋锁是其中一种类型的锁。 什么是自旋锁 自旋锁是一种轻量级的锁类型,它采用了忙等待的方式来解决锁冲突,并避免了线程的上下文切换。当一个线程尝试获得自旋锁时,如果锁没有被占用,该线程会立即获得锁,并继续执行。如果锁…

    C# 2023年6月6日
    00
  • JavaScript ESLint插件保姆级使用教程

    JavaScript ESLint插件保姆级使用教程 1. 什么是ESLint ESLint是一个可扩展的JavaScript代码检查工具。它可以检查代码中的语法错误,提供一致的代码风格,并可以检测代码中的潜在问题。ESLint 可以配置以满足您的特定需求。ESLint内置了很多规则,您也可以通过使用插件来添加自定义规则。 2. 安装ESLint 2.1 安…

    C# 2023年5月15日
    00
  • python代码中怎么换行

    Python代码中换行有以下几种方式: 方法一:使用“\” 在Python中,我们可以使用“\”字符来将长代码拆分成多行。在“\”字符后面加上回车符,Python会认为下一行代码是当前行的延续,直到整个表达式结束。例如: a = 1 + 2 + 3 + \ 4 + 5 + 6 + \ 7 + 8 + 9 print(a) # 输出 45 以上代码将长的表达式…

    C# 2023年5月31日
    00
  • C# 获取数据库中所有表名、列名的示例代码

    下面是关于“C# 获取数据库中所有表名、列名的示例代码”的完整攻略,以及两条示例说明。 攻略 获取数据库中所有表名、列名可以利用C#中的数据库元数据操作。可通过ADO.NET提供的DbConnection或DbDataReader对象访问元数据,其方法包括GetSchema等。这些方法可以获取关于数据库架构的信息。 下面是获取MySQL数据库中所有表名的示例…

    C# 2023年5月31日
    00
  • C#读写文本文件的方法

    C#是一种非常常用的编程语言,而读写文件是在编程中经常需要用到的操作之一。下面是使用C#读写文本文件的方法攻略。 读取文件中的所有文本内容 如果需要读取文件中的所有文本内容,可以使用C#的StreamReader类: string path = @"C:\example\test.txt"; using (StreamReader sr …

    C# 2023年6月6日
    00
  • 由vbs sort引发.NET Framework之间的关系说明

    由于题目中缺少具体的上下文,我假设这是一篇介绍VBScript(vbs)和.NET Framework之间关系的文章。以下是完整攻略: 1. VBScript与.NET Framework的关系 VBScript是一种基于COM(Component Object Model)的脚本语言,早期被广泛应用于Windows系统管理和自动化任务。而.NET Fram…

    C# 2023年6月3日
    00
  • c#实现数据同步的方法(使用文件监控对象filesystemwatcher)

    下面我来详细讲解一下“c#实现数据同步的方法(使用文件监控对象filesystemwatcher)”的完整攻略。整个过程中主要包括以下几个步骤: 创建两个文件夹folder1和folder2,用于模拟需要实现的数据同步场景; 在C#的控制台应用中,创建FileSystemWatcher类的实例; 配置FileSystemWatcher的监控参数(包括路径、所…

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