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日

相关文章

  • 在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法

    下面是关于“在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法”的完整攻略,包含两个示例。 1. 什么是缓存 缓存是一种将数据存储在内存中的技术,可以提高数据访问速度。缓存可以减少对数据库的访问次数,从而提高应用程序的性能。 2. 在WCF数据访问中使用缓存的步骤 以下是在WCF数据访问中使用缓存的步骤: 创建缓存对象。 将数据存储到缓存中。…

    C# 2023年5月15日
    00
  • HTTP 2.0 详细介绍

    HTTP 2.0 详细介绍 什么是HTTP/2 HTTP/2是用于安全传输万维网内容的应用层协议。与其前身HTTP/1.1有很多相似之处,但它们有很多重要的不同之处。HTTP/2旨在使Web页面加载更快,同时提供更好的安全性和代码复杂性,而且还带来了一些新功能。 HTTP/2的优点 多路复用HTTP/2采用二进制分帧,一个TCP连接可以传输多个二进制消息(请…

    C# 2023年6月7日
    00
  • ListView异步加载图片实现思路(优化篇)

    ListView异步加载图片是常见的Android开发需求之一。在加载大量图片时,如果不使用异步加载,会严重影响应用性能和用户体验。本篇文章主要讲解如何使用ListView实现异步加载图片,并对其进行优化。 实现思路 创建一个ViewHolder类并在其中声明ImageView控件。 在ListView中加入标记每一个ImageView的Tag。 利用Lru…

    C# 2023年6月6日
    00
  • C#关键字async/await用法

    下面是”C#关键字async/await用法”的完整攻略。 标题 C#关键字async/await用法 介绍 async/await是C# 5.0版本中新增的关键字,用于简化异步编程的过程。当我们需要在.NET应用程序中执行耗时操作时,通常会遇到线程阻塞、死锁、竞争和上下文问题等问题。使用async/await可以很好地解决这些问题,使得代码更易于编写和理解…

    C# 2023年6月6日
    00
  • C# zxing二维码写入的实例代码

    C# zxing是一个用于二维码的开源框架,它支持二维码的读取、生成,可用于各种应用场景,例如电子商务、物流信息追踪等。下面是C# zxing二维码写入的实例代码攻略: 1. 安装zxing库 首先需要安装zxing库,你可以从nuget包管理器中搜索zxing来安装。 2. 创建二维码编码器 BarcodeWriter writer = new Barco…

    C# 2023年5月31日
    00
  • C# 迭代器分部类与索引器详情

    让我通过以下标题,详细讲解C#迭代器分部类与索引器的详情: 1. 迭代器分部类 1.1 什么是迭代器 在C#中,迭代器是一种用于简化类似于集合、列表、数组等序列的遍历操作的机制。使用迭代器,我们可以通过简单且易于理解的方式遍历序列,而无需考虑复杂的内部实现。 1.2 什么是迭代器分部类 迭代器分部类是一种特殊的类类型,它可以在多个文件中声明并定义,在编译时会…

    C# 2023年5月31日
    00
  • C#使用日志组件log4net

    让我来为您详细讲解“C#使用日志组件log4net”的完整攻略。 1. 什么是log4net log4net是一个日志记录组件,它为应用程序提供了提供基于框架级的日志记录功能。它允许开发人员在应用程序中记录消息、异常、错误和其它事件,而无需了解记录这些事件的底层细节。log4net支持多种日志记录输出目标,包括文件、数据库、远程服务器等。 2. 安装log4…

    C# 2023年5月15日
    00
  • C#实现将Doc文档转换成rtf格式的方法示例

    前言 本文将详细介绍如何使用C#将.doc文档转换成.rtf格式的方法示例。本文假设您已经了解C#编程语言,并且已经准备好在您的开发环境中进行编程和调试。 主要步骤 以下是将.doc文档转换成rtf格式的主要步骤: 加载.doc文档; 获取文档的数据流; 将数据流转换为.rtf格式; 将.rtf格式保存到文件或者输出流中。 详细说明 步骤1:加载.doc文档…

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