【问题标题】:Padding a alphanumeric textbox text with zero's用零填充字母数字文本框文本
【发布时间】:2013-12-04 20:39:56
【问题描述】:

textbox 只包含我使用padleft 方法的数字时,这里我的textbox 包含字母数字文本,为此我需要用零填充。

textBox1.Text = textBox1.Text.PadLeft(5, '0');

textbox 包含像 1 这样的数字时,此行有效。输出为 00001。 现在如果我在文本框中的文本是 A1.output 应该是 A00001。 如果 AB1 输出应为 AB00001。 位数应为 5

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以为此使用RegEx

    var parts = Regex.Split(textBox1.Text, "(\\d+)");
    textBox1.Text = parts.Length<2 ? parts[0] : parts[0] + parts[1].PadLeft(5, '0');
    

    更新:如果不想使用Regex,可以试试下面的代码:

    int i = 0;
    for(;i < textBox1.TextLength; i++){
      if(char.IsDigit(textBox1.Text[i])) break;
    }
    textBox1.Text = textBox1.Text.Substring(0,i) + 
                    textBox1.Text.Substring(i).PadLeft(5,'0');
    

    【讨论】:

    • 它的工作,但总位数应该是5,像这样,当我输入AB1时,AB00001应该是输出
    • @user2897388 那是因为你的问题是错误的,现在你编辑了它,答案就简单多了,看更新。
    • 你能给我解释一下,不用正则表达式来处理同一个过程吗
    【解决方案2】:

    您可以使用此代码。我假设您想将字母与数字分开。如果您只有数字或数字,它也可以工作。

    string input = "A1";
    
    var match = Regex.Match(input, @"([a-zA-Z]*)(\d*)");
    
    string group1 = match.Groups.Count > 1 ? match.Groups[1].Value : "";
    string group2 = match.Groups.Count > 2 ? match.Groups[2].Value : "";
    
    string output = group1 + group2.PadLeft(6 - group1.Length - group2.Length, '0');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多