Wie viel kostet Sie wirklich kümmern sich um Effizienz? Persönlich würde ich verwenden:
string padded = string.Join(",", original.Split(',')
.Select(x => x.PadLeft(2, '0')));
(Wie in den Kommentaren darauf hingewiesen, wenn Sie 3.5 verwenden sind .NET Sie einen Anruf müssen ToArray
nach dem Select
.)
Das ist definitiv nicht der am effizientesten Lösung, aber es ist, was ich verwenden würde, bis ich bewiesen hätte, dass es nicht effizient genug war. Hier ist eine Alternative ...
// 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();
}
Es ist schrecklich Code, aber ich denke, es wird tun, was Sie wollen ...
danken u sehr viel –
Nizza Antwort. Für .NET3.5-Leute, denken Sie daran, die 'IEnumerable' in' string [] 'zu konvertieren, bevor Sie an' string.Join' übergeben werden. –
In einigen Fällen, wenn ich hart Verarbeitung in Parrarel Schleife und ich zähle Ergebnis diese Methode doesn ' t arbeiten richtig. –