You can also use StringBuilder which is slightly faster
StringBuilder reversed = new StringBuilder();
foreach (var word in str.Split(','))
{
char[] singlesentence = word.ToCharArray();
Array.Reverse(singlesentence);
reversed.Append(singlesentence);
reversed.Append(",");
}
return reversed.ToString();
New
New2
static public string Reverse3(string str)
{
StringBuilder reversed = new StringBuilder();
foreach (var word in str.Split(','))
{
char[] singlesentence = word.ToCharArray();
Array.Reverse(singlesentence);
reversed.Append(singlesentence);
reversed.Append(",");
}
return reversed.ToString();
}
static void Main()
{
string names = "Jack,Dylan,Bobby,Peter";
const int iterations = 1000000;
Perform(Reverse, names, iterations, "Original");
Perform(Reverse2, names, iterations, "New");
Perform(Reverse3, names, iterations, "New2");
}
/*
" Release " Configuration
Iterations | Original | New | New2
-------------+-------------+-----------+--------
10 000 | 29 ms | 5 ms | 5 ms
-------------+-------------+-----------+--------
100 000 | 226 ms | 54 ms | 43 ms
-------------+-------------+-----------+--------
1 000 000 | 1763 ms | 442 ms | 405 ms
*/
Try it here