C# 用零填充左边

C# 用零填充左边,c#,regex,C#,Regex,我想在字符串中用零(必须是8位数字)填充每个数字 e、 g 是否可以使用正则表达式来实现这一点?尤其是Regex.Replace() 请注意,对于不同的数字,零的数量是不同的。我的意思是填充的数字必须是8位长。Microsoft为此内置了以下功能: someString = someString.PadLeft(8, '0'); 这里有一篇关于 要使用正则表达式,请执行以下操作: string someText = "asd 123 rete"; someText = Regex.Repla

我想在字符串中用零(必须是8位数字)填充每个数字

e、 g

是否可以使用正则表达式来实现这一点?尤其是
Regex.Replace()


请注意,对于不同的数字,零的数量是不同的。我的意思是填充的数字必须是8位长。

Microsoft为此内置了以下功能:

someString = someString.PadLeft(8, '0');
这里有一篇关于

要使用正则表达式,请执行以下操作:

string someText = "asd 123 rete"; 
someText = Regex.Replace(someText, @"\d+", n => n.Value.PadLeft(8, '0'));
abc 1.1.1
abc 1.2.1
abc 1.10.1

如果您没有任何Regex附件,请使用格式字符串:


线程很旧,但可能有人需要它

尼肯说他想使用正则表达式。为什么?没关系,也许很有趣。我不得不在SQL中进行内联替换,因此一些调用C#regex的自制SQL函数非常有用

我需要垫的东西看起来像这样:

string someText = "asd 123 rete"; 
someText = Regex.Replace(someText, @"\d+", n => n.Value.PadLeft(8, '0'));
abc 1.1.1
abc 1.2.1
abc 1.10.1
我想:

abc 001.001.001
abc 001.002.001
abc 001.010.001
这样我就可以按字母顺序排序了

到目前为止(我发现)唯一的解决方案是分两步完成填充和截断到正确的长度。我不能使用Lambda,因为这是在SQL中,而且我还没有为此准备好函数

//This pads any numbers and truncates it to a length of 8
var unpaddedData = "...";
var paddedData = Regex.Replace(unpaddedData , "(?<=[^\d])(?<digits>\d+)",
                                                     "0000000${digits}");
var zeroPaddedDataOfRightLength = Regex.Replace(paddedData ,"\d+(?=\d{8})","");
//这将填充任何数字并将其截断为8的长度
var unpaddata=“…”;
var paddedData=Regex.Replace(unpaddadata,”(?
static void Main(string[]args)
{
字符串myCC=“4556364607935616”;
字符串myMasked=Maskify(myCC);
控制台写入线(myMasked);
}        
公共静态字符串Maskify(字符串cc)
{
int len=cc.长度;

如果(len,拜托……用谷歌搜索一下不会有什么坏处,你也不需要正则表达式:是的,我知道PadLeft()方法,但问题是我有一个字符串,里面有一些奇怪的单词,我只想给数字加零(你可以注意到,不同的数字,这些零的数量是不同的).我可以使用正则表达式查找所有数字并检查其长度,但我想知道使用Replace()是否可以更轻松地完成此操作?不,你被否决是因为你没有进行有效的沟通。如果有多人不能理解你,那么你有责任让自己更好地被理解。我问了一些不同的问题:P我不想将我的字符串拆分成数组来填充左侧的块。我想用正则表达式在一行中完成;)这根本不执行任何拆分。您也可以使用PadRight方法通过在字符串的右侧添加特殊字符来固定字符串的长度。同样,请检查下面的我的评论。欢迎来到堆栈溢出,回答问题。但答案应该回答问题。此处的问题不需要重播非常感谢你的反馈。下次我会更准确。这是我的第一次贡献,我一直想加入这个伟大的社区。很高兴能够帮助我向这个社区说声谢谢。谢谢!要更好地理解这个网站,请阅读书页。
static void Main(string[] args)
    {
       string myCC = "4556364607935616";
       string myMasked = Maskify(myCC);
       Console.WriteLine(myMasked);
    }        

public static string Maskify(string cc)
    {
       int len = cc.Length;
       if (len <= 4)
          return cc;

       return cc.Substring(len - 4).PadLeft(len, '#');
    }