Поиск слова — String Operationg или Linq

У меня есть строка, полная нескольких сотен слов.

Как мне получить каждое «слово» (это также может быть однобуквенное число или знак препинания), и по мере нахождения каждого «слова» оно удаляется из строки.

Это возможно?

Пример:

Нить:

"это строка, полная слов и букв, а также знаков препинания! и num6er5."

Что касается алгоритма, то в приведенной выше строке ровно 15 слов.


person Community    schedule 14.07.2010    source источник
comment
вы имеете в виду, что вы удаляете все настоящие слова в строке, полной случайных букв?   -  person Martin Ongtangco    schedule 14.07.2010
comment
+1. Глупый я за то, что не сделал этого изначально. Я только что добавил пример.   -  person    schedule 14.07.2010


Ответы (1)


То, что вы пытаетесь сделать, известно как токенизация.

В C# строковая функция Split() работает очень хорошо. Если он используется, как в коде Нидермайра без каких-либо параметров, он возвращает массив строк, разделенных (разделенных?) любыми пробелами, например:

«У меня есть пробелы» -> {«У меня», «есть», «пробелы»}

Вы также можете указать любые символы для разделения в качестве параметра Split() (например, ',' или ';' для обработки CSV-файлов).

Метод Split() не обращает внимания на то, что входит в строки, поэтому будут обработаны любые буквы, цифры и другие символы.

Об удалении слов из строки: вы можете захотеть записать строку в буфер, чтобы добиться этого, но я серьезно думаю, что это заходит слишком далеко. Строки неизменяемы, что означает, что каждый раз, когда вы удаляете «следующее слово», вам придется воссоздавать весь строковый объект. Будет намного проще просто разбить () всю строку, отбросить строку и работать с массивом с этого момента.

person Johan Strömhielm    schedule 14.07.2010
comment
Спасибо за этот Streamcap. :) - person ; 14.07.2010