質問
効率的な方法を見つけたい:
私は次のような文字列を持っています:
'1,2,5,11,33'
10未満の数字(1桁の数字)にのみゼロをパッドしたい
だから私は取得したいです
'01,02,05,11,33'
ありがとう
解決
あなたはいくらですか 本当 効率を気にしますか?個人的に使用します:
string padded = string.Join(",", original.Split(',')
.Select(x => x.PadLeft(2, '0')));
(コメントで指摘されているように、.NET 3.5を使用している場合は、 ToArray
後に Select
.)
それは間違いなくそうではありません 最も効率的です 解決策ですが、それが十分に効率的ではないことを証明するまで、それは私が使用するものです。これが代替です...
// 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();
}
これは 最悪 コードですが、私はそれがあなたが望むことをするだろうと思います...
他のヒント
string input= "1,2,3,11,33";
string[] split = string.Split(input);
List<string> outputList = new List<string>();
foreach(var s in split)
{
outputList.Add(s.PadLeft(2, '0'));
}
string output = string.Join(outputList.ToArray(), ',');
所属していません StackOverflow