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