Быстрый способ удалить первый символ в строке


скажем, у нас есть следующая строка

string data= "/temp string";

Если мы хотим удалить первый символ / мы можем сделать много способов, такие как :

data.Remove(0,1);
data.TrimStart('/');
data.Substring(1);

но, на самом деле я не знаю, какой из них имеет лучший алгоритм и делает это быстрее..
есть ли тот, который является лучшим или все одинаковы ?

3 151

3 ответа:

второй вариант действительно не такой, как другие - если строка "///foo", она станет "foo" вместо "//foo".

первый вариант требует немного больше работы, чтобы понять, чем третий - я бы как наиболее распространенный и читаемый.

(очевидно, что каждый из них в качестве отдельного оператора не будет делать ничего полезного - вам нужно будет назначить результат переменной, возможно .)

Я бы не стал брать производительность учитывается здесь, если это на самом деле не становится проблемой для вас - в этом случае единственным способом, который вы знаете, было бы иметь тестовые случаи, а затем легко просто запустить эти тестовые случаи для каждого варианта и сравнить результаты. Я бы ожидал Substring наверное, быть самым быстрым здесь, просто потому что Substring всегда заканчивается созданием строки из одного куска исходного ввода, тогда как Remove и не менее потенциально склейте вместе начальный кусок и конец кусок.

думаю, что Remove и Substring будет связывать для первого места, так как они оба хлебают фиксированный размер части строки, в то время как TrimStart выполняет сканирование слева с тестом на каждом символе, а затем должен выполнять точно такую же работу, как и два других метода. Серьезно, хотя, это расщепление волос.

вы могли бы профилировать его, если вы действительно заботились. Напишите цикл из многих итераций и посмотрите, что произойдет. Однако есть вероятность, что это не узкое место в вашем приложении, и TrimStart кажется наиболее семантически правильным. Старайтесь писать код читабельно перед оптимизацией.