How much do you really care about efficiency? Personally, I would use:
string padded = string.Join(",", original.Split(',') .Select(x => x.PadLeft(2, '0')));
(As pointed out in the comments, if you are using .NET 3.5, you will need to call ToArray after Select .)
This is definitely not the most effective solution, but it is what I will use until I prove that it is not effective enough. Here is an 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(); }
This is terrible code, but I think it will do what you want ...
Jon Skeet Dec 13 '10 at 19:36 2010-12-13 19:36
source share