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