我想找到一种有效的方法:
我有一个像这样的字符串:
'1,2,5,11,33'
我只想对小于 10(只有一位)的数字补零
所以我想得到
'01,02,05,11,33'
谢谢
最佳答案
您真正有多关心效率?我个人会使用:
string padded = string.Join(",", original.Split(',')
.Select(x => x.PadLeft(2, '0')));
(正如评论中所指出的,如果您使用的是 .NET 3.5,则需要在 Select
之后调用 ToArray
。)
这绝对不是最有效 的解决方案,但在我证明它不够有效之前,我会一直使用它。这是一个替代方案...
// Make more general if you want, with parameters for the separator, length etc
public static string PadCommaSeparated(string text)
{
StringBuilder builder = new StringBuilder();
int start = 0;
int nextComma = text.IndexOf(',');
while (nextComma >= 0)
{
int itemLength = nextComma - start;
switch (itemLength)
{
case 0:
builder.Append("00,");
break;
case 1:
builder.Append("0");
goto default;
default:
builder.Append(text, start, itemLength);
builder.Append(",");
break;
}
start = nextComma + 1;
nextComma = text.IndexOf(',', start);
}
// Now deal with the end...
int finalItemLength = text.Length - start;
switch (finalItemLength)
{
case 0:
builder.Append("00");
break;
case 1:
builder.Append("0");
goto default;
default:
builder.Append(text, start, finalItemLength);
break;
}
return builder.ToString();
}
这是可怕的代码,但我认为它会做你想做的...
关于c# pad left 到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432734/