I\'m trying to brush up on my LINQ by writing some simple extension methods. Is there any better way to write such a function as below that removes a given list of character
You get a little performance increase when using a stringBuilder instead of the new string. Below results in:
StringBuilder 00:00:13.9930633 new String 00:00:15.1495309
string s = "ababababajjjaazsiajjsoajiojsioajlmmzaaokpdahgffaiojsia";
var sw = new Stopwatch();
sw.Start();
var toRemove = new char[] { 'j', 'a', 'z' };
for (int i = 0; i < 1000000; i++)
{
StringBuilder sb = new StringBuilder(s.Length, s.Length);
foreach (var c in s) if (!toRemove.Contains(c)) sb.Append(c);
}
Console.WriteLine("StringBuilder " + sw.Elapsed);
sw.Restart();
for (int i = 0; i < 1000000; i++)
{
new string(s.Where(c => !toRemove.Contains(c)).ToArray());
}
Console.WriteLine("new String " + sw.Elapsed);