我编写了一个有趣的代码,如果字符串的第一个字符为空白,它将用" 0"替换该空格。它的工作原理,但就像我说它很有趣。有没有更好的方法来写同样的东西?
char ch = value[0];
if (ch == ' ')
{
value = value.Trim();
value = "0" + value;
}
return value;
答案 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;