`

字符串SubCutString

 
阅读更多
public static string SubCutString(this string input, int length, string substitute = "...")
        {
            if (string.IsNullOrEmpty(input))
            {
                return string.Empty;
            }
            //初始化字符串的字符数组
            Char[] arr;
            //如果字符串的真实长度小于或者等于要截取的字符串长度就直接返回源字符串
            if (GetStringLength(input, out arr) <= length)
            {
                return input;
            }
            //获取不包括substitute的长度
            if (string.IsNullOrEmpty(substitute))
            {
                length -= Encoding.UTF8.GetBytes("...").Length;
            }
            else
            {
                length -= Encoding.UTF8.GetBytes(substitute).Length;
            }
            //分析出来的字符字节长度
            double byteLength = 0;
            //拼装字符串类
            var subBuilder = new StringBuilder();
            //循环判断每个字符是属于双字节还是单字节(大写英文字母为1.5个字节)
            for (var i = 0; i < arr.Length; i++)
            {
                //判断双字节
                var doubleByteMatch = DoubleByteRegex.Match(arr[i].ToString());
                if (doubleByteMatch.Success)
                {
                    byteLength += 2;
                }
                else
                {
                    //判断是否为大写
                    var caseMatch = CaseRegex.Match(arr[i].ToString());
                    if (caseMatch.Success)
                    {
                        byteLength += 1.5;
                    }
                    else
                    {
                        byteLength++;
                    }
                }
                if (byteLength > length)
                {
                    break;
                }
                subBuilder.Append(arr[i]);
            }
            subBuilder.Append(substitute);
            return subBuilder.ToString();
        }

 

分享到:
评论

相关推荐

    rf.rar_RF 字符串截取_Rf字符串比较_rf字符串切割

    在这个"rf.rar"压缩包中,我们看到涉及到RF字符串处理的三个关键知识点:RF字符串截取、RF字符串比较以及RF字符串切割。 1. RF字符串截取: 正则表达式提供了灵活的字符串截取方式。通过定义匹配模式,可以精确地...

    [字符串]字符串提取(获取两个字符串中间的字符串)

    在C#中,处理字符串时,我们经常需要从一个较大的字符串中提取出特定部分,比如位于两个已知字符串之间的子串。这在解析日志、处理配置文件或者从HTML源码中提取信息时非常常见。标题中的“字符串提取(获取两个字符...

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节;

    java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...

    C#字符串删除指定字符串|字符串删除子字符串

    在C#编程语言中,处理字符串是常见的任务之一,其中包括删除字符串中的特定部分或子字符串。本篇文章将详细探讨如何在C#中实现这一功能,包括多种方法和实用技巧。 首先,C#提供了多种内置方法来操作字符串,比如`...

    LabVIEW删除字符串中空格

    将“删除字符”函数拖放到前面板,设置输入为你的字符串,将“要删除的字符”设置为32,输出就是没有空格的新字符串。 3. **计算字符长度**: 计算字符串的字符长度,可以使用“字符串长度”函数。将该函数拖放到...

    labview字符串拆分到数组 支持中文1

    在LabVIEW中处理字符串是一项常见的任务,尤其是将一个字符串拆分成多个子字符串,这通常涉及到字符串的分割操作。本篇将详细介绍如何在LabVIEW中实现“字符串拆分到数组”并支持中文字符。 一、字符串拆分的基本...

    TIA博途-字符转换为字符串以及截取字符串有效字符的具体方法示例.docx

    在处理通信数据时,我们经常需要对字符和字符串进行操作,例如将字符转换为字符串,或者从字符串中截取有效字符。以下将详细介绍在TIA博途中如何实现这些操作。 首先,字符转换为字符串的过程通常涉及到ASCII码。...

    c#正则表达式截取指定字符串之间的字符串。类文件直接用就可以了~

    给写了2个方法,一个是直接截取单个需要的字符串,比如字符串string a="ab123456",我只需要提取3,那么就是单独截取就可以了,从2开始到4结束就行。 第二个是把所有的符合条件的字符串都截取出来,提取出来,比如...

    截取指定长度的字符串

    在编程领域,字符串操作是一项基础且重要的任务。"截取指定长度的字符串"这个主题涉及到的是如何从一个字符串中提取出特定长度的部分。这在处理用户输入、数据展示、信息提取等多个场景中都非常常见。接下来,我们将...

    易语言八种方法倒转字符串源码

    在易语言编程环境中,倒转字符串是一个常见的操作,可以用于各种文本处理任务。本文将详细介绍八种不同的方法来实现这一功能,并提供相应的源码。易语言作为一款中文编程语言,以其简洁直观的语法深受初学者和专业...

    C# 字符串转十六进制串,16进制反向转回原字符串

    在C#编程中,字符串与十六进制之间的转换是一个常见的需求,特别是在处理数据存储、网络传输或者加密解密等场景。下面将详细讲解如何在C#中实现这一过程。 首先,我们要了解基本概念。字符串是由Unicode字符组成的...

    JS中判断某个字符串是否包含另一个字符串的五种方法

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回 -1。 方法二:match() var str = "123" var reg = RegExp(/3/); if(str.match(reg)){ //包含; } ...

    DB2字符串处理 字符串处理 db2 函数

    DB2 中的字符串处理函数可以分为多种类型,包括字符转换函数、去空格函数、取子串函数、字符串比较函数和字符串操作函数等。 一、字符转换函数 * ASCII() 函数:返回字符表达式最左端字符的 ASCII 码值。在 ASCII...

    C#中在一个字符串中删除另一个字符或字符串

    标题提到的“C#中在一个字符串中删除另一个字符或字符串”涉及到的关键知识点主要包括字符串操作、字符数组、字符串替换以及正则表达式。以下将详细讲解这些知识点。 首先,C#中的字符串(`string`)是不可变的,这...

    C语言字符串练习(习题+答案).zip

    本资源"《C语言字符串练习(习题+答案).zip》"正是针对这一需求而准备的,它包含了C语言字符串操作的专项练习题和对应的答案,帮助学习者巩固和提升在字符串处理方面的技能。 字符串在C语言中扮演着重要角色,它们...

    QT中字符串的比较、查找、替换等操作 - 大存的博客1

    在QT框架中,字符串处理是日常开发中必不可少的一部分。这篇博客主要介绍了QT中关于字符串的比较、查找、替换等操作,这些操作对于处理文本信息至关重要。以下是对这些操作的详细说明: 1. **字符串拼接**: 在QT...

    TIA博途中字符串转换相关指令的使用方法(一).docx

    TIA 博途中字符串转换相关指令的使用方法是指在 Siemens SIMATIC TIA Portal 中使用的字符串转换相关指令,包括移动和转换字符串指令、字符串和数值相互进行转换指令等。 1. 移动和转换字符串指令 移动和转换字符...

    C语言实现字符串截取

    根据给定的信息,本文将详细解释两个用于C语言中字符串截取的方法:`subStringByIndex` 和 `subStringByPointer`。这两个函数都属于自定义实现,它们提供了灵活且实用的功能来帮助开发者轻松地从一个字符串中提取所...

    用C语言写的链式字符串运算算法

    5. **比较字符串**:比较两个链式字符串通常通过依次比较每个字符来实现,直到找到不同字符或到达字符串末尾。 6. **复制字符串**:复制链式字符串需要创建一个新的链表,并逐个复制原字符串的节点。 7. **连接...

    labview字符串创建数组

    - **字符到字符串数组**:如果你有字符数组,可以使用“字符数组到字符串”函数,将每个字符数组元素转换为单独的字符串,然后用“数组构造函数”组合它们。 4. **操作字符串数组**: - **数组操作函数**:...

Global site tag (gtag.js) - Google Analytics