将零填充到字符串的开头

时间:2013-11-18 13:21:40

标签: c#

我编写了一个有趣的代码,如果字符串的第一个字符为空白,它将用" 0"替换该空格。它的工作原理,但就像我说它很有趣。有没有更好的方法来写同样的东西?

    char ch = value[0];
    if (ch == ' ')
    {
        value = value.Trim();
        value = "0" + value;
    }
    return value;

6 个答案:

答案 0 :(得分:8)

这很简单:

if (value.Length > 0 && value[0] == ' ')
    value = '0' + value.Substring(1);

答案 1 :(得分:1)

无论你想要实现什么,这个都更短:

if(value.StartsWith(" "))
{
  value = string.Format("0{0}", value.Trim());
}

答案 2 :(得分:1)

if (value.StartsWith(" "))
{
    value = value.TrimStart(' ');
    value = value.PadLeft(value.Length + 1, '0');
}

假设value不是空引用。有关详细信息,请参阅this

答案 3 :(得分:1)

您可以使用正则表达式匹配字符串开头的空格,并替换为零字符:

value = Regex.Replace(value, "^ +", "0");

如果你只想在字符串的开头替换一个空格,如果恰好有多个空格:

value = Regex.Replace(value, "^ ", "0");

注意:这与原始实现的不同之处在于两种方式:它只会从字符串的开头删除实际空格,而不会像Trim方法那样删除任何空白字符,并且它只会删除空格字符串的开头,而不是字符串的结尾,正如Trim方法所做的那样。我认为这些细节实际上并不是代码的意图。

答案 4 :(得分:1)

我会使用Trim()和PadLeft():

        string value = " 5678";
        value = value.Trim().PadLeft(5, '0');

如果您有“1”,或“1”,或“1”和空格的任意组合,则最终为“00001”。

您只需将5更改为您需要字段的宽度。

答案 5 :(得分:0)

试试这个

 string value = " String with space";
 var firstChar = (byte)value.First();
 if (firstChar == ' ')
 {
    var regex = new Regex(Regex.Escape(" "));
    value = regex.Replace(value, "0", 1);
 }
 return value;