Skip to content

c#如何去除文本末尾重复字符

约 642 字大约 2 分钟

c#正则表达式

2025-08-24

如何使用正则表达式去去除末尾重复的数字0,用本方法也可以去除文本重复的其他数字或其他文本,替换正则的匹配规则方法即可。

例子1

本文因为需要,所以举例比较少见的文本。

文本1:0.0030002000010000

分析

我们可以观察到文本1的末尾规律,有重复4个0数字,我们要考虑末尾有重复0的情况,1个也要去除。

匹配规则

string pattern = "(0)\1{0,}$"

规则解析

(0)\1 :重复数字0。

{0,} :匹配前面的规则至少0到无数次。

$ :以前面的规则结尾。

例子1c#代码

// 如何处理末尾有多个0的文本或小数?

// 我的方法:先正则匹配到末尾重复的0,然后替换掉,如果末尾还有.,那么也一并处理掉

// 末尾有0的文本,方便演示,所以举例比较罕见的例子
string numText1 = "0.0030002000010000";
Console.WriteLine($"例子1:{numText1}");
// 正则匹配方式
string pattern = @"(0)\1{0,}$";
// 使用正则替换
string result1 = Regex.Replace(numText1,pattern,"");
// 控制台输出结果
Console.WriteLine($"例子1,处理末尾0后的文本:{result1}");

例子2

文本2:99999999.00000000000000

分析

跟例子1末尾数字都是0,所以处理0的方法与例子1相同,这就不多赘述。直接与例子1方法一样处理。但处理后,末尾就有个【.】的情况,那就要截取文字就行。

例子2代码

// 如果处理0后末尾有.呢,我们不方便转换数值去处理数字文本呢?
// 方法同上,处理末尾0后,还有.,那就处理.
string numText2 = "99999999.00000000000000";
Console.WriteLine($"例子2:{numText2}");
string result2 = Regex.Replace(numText2, pattern, "");
// 这样处理后末尾有.
Console.WriteLine($"例子2,处理末尾0后的文本:{result2}");
// 现在开始处理末尾的那个.,有多种方法,这里介绍一种。
// 1、判断最后一个是否为.
if (result2.EndsWith("."))
{
    // 替换掉末尾.
    result2 = result2.Substring(0, result2.Length - 1);
    Console.WriteLine($"例子2,处理末尾.后的文本:{result2}");
}

最终去除末尾0和.的效果

去除末尾重复字符.png

本博客采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可