在c#中,我如何使用正则表达式.替换为添加前导零(如果可能)

本文关键字:如果 添加 替换 正则表达式 何使用 | 更新日期: 2023-09-27 18:03:45

我想为字符串中的数字添加一定数量的前导零。例如:

输入:"page 1",输出:"page 001"输入:"page 12",输出:"page 012"输入:"page 123",输出:"page 123"

Regex.Replace的最佳方法是什么?

此时我使用这个,但结果是001,0012,00123。

string sInput = "page 1";
sInput  = Regex.Replace(sInput,@"'d+",@"00$&");

在c#中,我如何使用正则表达式.替换为添加前导零(如果可能)

正则表达式替换表达式不能用于此目的。然而,Regex.Replace有一个重载,它接受一个委托,允许您为替换做自定义处理。在本例中,我正在搜索所有数值,并用填充为三个字符长度的相同值替换它们。

string input = "Page 1";
string result = Regex.Replace(input, @"'d+", m => m.Value.PadLeft(3, '0'));
我不建议在c#代码中使用匈牙利语前缀。它们没有提供真正的优势,而且。net的通用风格指南建议不要使用它们。

使用回调进行替换,并使用String.PadLeft方法填充数字:

string input = "page 1";
input = Regex.Replace(input, @"'d+", m => m.Value.PadLeft(3, '0'));
var result = Regex.Replace(sInput, @"'d+", m => int.Parse(m.Value).ToString("00#"));
string sInput = "page 1 followed by page 12 and finally page 123";
string sOutput = Regex.Replace(sInput, "[0-9]{1,2}", m => int.Parse(m.Value).ToString("000"));
string sInput = "page 1";
//sInput = Regex.Replace(sInput, @"'d+", @"00$&");
string result = Regex.Replace(sInput, @"'d+", me =>
{
    return int.Parse(me.Value).ToString("000");
});
相关文章: