I have a string like
string Text = "012345678901234567890123456789";
and a List<int>
with indexes
List<int> Indexes = new List<int>() { 2, 4, 7, 9, 15, 18, 23, 10, 1, 2, 15, 40 };
with following restrictions
- there are duplicates within the list
- the list is not sorted
- there may be indexes >
Text.length
what's the best way to remove characters from the text which are in the index list?
expected output:
035681234679012456789
Is there a more efficent way than
foreach (int index in Indexes
.OrderByDescending(x => x)
.Distinct()
.Where(x => x < Text.Length))
{
Text = Text.Remove(index, 1);
}
Update:
Here are the Benchmarks of the current answers (string
with 100.000 characters and List<int>
with length 10.000:
Gallant: 3.322 ticks
Tim Schmelter: 8.602.576 ticks
Sergei Zinovyev: 9.002 ticks
rbaghbanli: 7.137 ticks
Jirí Tesil Tesarík: 72.580 ticks