Я пишу поисковое приложение, которое маркирует большой текстовый корпус.
Синтаксический анализатор текста должен удалить из текста любую тарабарщину (т. Е. [^ A-zA-Z0-9])
У меня в голове было 2 идеи, как это сделать:
1) Поместите текст в строку, преобразуйте его в charArray, используя String.tocharArray, а затем запустите char за char с помощью цикла -> while (position
2) Удалите все не цифры / альфа, используя string.replace, а затем string.split с некоторыми разделителями, это означает, что мне нужно дважды выполнить всю строку.
Один раз, чтобы удалить плохие символы, а затем снова разделить его.
Я предположил, что, поскольку # 1 делает то же самое, что и # 2, но в O (n) это будет быстрее, но после тестирования обоих # 2 будет намного (намного!) Быстрее.
Я пошел еще дальше и просмотрел код, стоящий за String.Strip, используя отражатель .net red-gate.
Он запускает неуправляемый символ за символом точно так же, как # 1, но все еще намного быстрее.
Понятия не имею, почему # 2 намного быстрее, чем # 1.
Есть идеи?