Самый быстрый способ удалить первый char в строке
Скажем, что у нас есть следующая строка
string data= "/temp string";
Если мы хотим удалить первый символ /
, мы можем сделать много способов, таких как:
data.Remove(0,1);
data.TrimStart('/');
data.Substring(1);
Но.. действительно, я не знаю, какой из них имеет лучший алгоритм и делает это быстрее..
Есть ли тот, который является лучшим или все одинаковы?
Ответы
Ответ 1
Второй вариант действительно не совпадает с другим - если строка "///foo", она станет "foo" вместо "//foo".
Первый вариант требует немного дополнительной работы для понимания, чем третий - я бы рассмотрел параметр Substring
как наиболее распространенный и читаемый.
(Очевидно, что каждый из них как отдельный оператор не будет полезен - вам нужно назначить результат переменной, возможно data
).
Я бы не стал принимать во внимание здесь, если только это не стало для вас проблемой, и в этом случае единственный способ, который вы знаете, - это иметь тестовые примеры, а затем легко просто запустить эти тестовые примеры для каждый вариант и сравнить результаты. Я бы ожидал, что Substring
, вероятно, будет самым быстрым здесь, просто потому, что Substring
всегда заканчивает создание строки из одного фрагмента исходного ввода, тогда как Remove
должен по крайней мере потенциально склеить стартовый фрагмент и конец фрагмента.
Ответ 2
Я бы предположил, что Remove
и Substring
будут привязаны к первому месту, так как они оба вырезают часть строки фиксированного размера, тогда как TrimStart
выполняет сканирование слева с тестом на каждом а затем должен выполнять точно ту же работу, что и два других метода. Серьезно, однако, это расщепление волос.
Ответ 3
Вы могли бы профилировать его, если вы действительно заботились. Напишите цикл многих итераций и посмотрите, что произойдет. Однако есть вероятность, что это не является узким местом в вашем приложении, и TrimStart кажется наиболее семантически правильным. Стремитесь писать код до оптимизации.