Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
Надо из текстовой строки убрать (вырезать) слова. Под словом понимается совокупность только букв разного регистра длиной не менее, например, 4.
В строке могут быть знаки препинания, цифры и т.д. Может есть у кого готовое решение? |
Re: Вырезать слова из строки | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Если ничего, кроме результата, не важно, то бегите посимвольно от начала к концу строки.
Встречая букву, запоминайте ее позицию, и начинайте считать последовательные буквы. Как только встретите небукву, то проверьте счетчик и удалите слово (STUFF), если счетчик не меньше требуемого. И так до конца строки. Алгоритм наверняка не самый оптимальный - это первое, что пришло в голову. |
Re: Вырезать слова из строки | |
---|---|
vnkor Сообщений: 324 Дата регистрации: 04.10.2007 |
А пример можно? |
Re: Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
Ну если например минимальная длина 3, то из:
должно получиться:
|
Re: Вырезать слова из строки | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
По-моему, результат не соответствует заданию - исчезла часть небукв. |
Re: Вырезать слова из строки | |
---|---|
Pliskin Сообщений: 2959 Откуда: Новосибирск Дата регистрации: 19.11.2003 |
getwordcount()
getwordnum() |
Re: Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
Ну да, я там удалил еще точки сразу после удаляемых слов, считаю это буквой в слове ) |
Re: Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
В этих функциях можно указать из чего должен состоять выделяемый фрагмент? Мне надо только буквы, ну и точки/запятые (не обязательно), и с минимальной длиной. |
Re: Вырезать слова из строки | |
---|---|
of63 Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Еще такой способ:
- строим образ исходной строки, а именно CHRTRAN(исх.строка, все возможные буквы, REPICATE("X", сколько возможных букв)) && будет проще искать вхождения понятия "слово для удаления" - ищем в строке-образе AT() сначала максимальную последовательность "X" (потом меньше и меньше, до 4х, пока не найдем) - если нашли - удаляем найденное в исходной строке. Если не нашли - то конец цикла - повторить с шага 1 |
Re: Вырезать слова из строки | |
---|---|
Рома Сообщений: 1079 Дата регистрации: 06.06.2001 |
Исправлено 2 раз(а). Последнее : Рома, 01.11.17 13:48 |
Re: Вырезать слова из строки | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет, но кто мешает проанализировать найденное "слово" и если оно не удовлетворяет критериям удаления (короткое, или с цифрами) то оставить его. Аналогично (возможно более эффективно) можно использовать ALINES() с 3 и последующими параметрами (если версия фокса позволяет, конечно) - эта функция побьёт исходную строку на "слова" по указанным разделителям (их сами можно включать в слова, а можно и сразу выкинуть), а далее в цикле собрать обратно строку, выкидывая то что нужно выкинуть, ну и, возможно, "облагораживая" оставляемые элементы - убирая "пустые" или состоящие только из разделителей (точек/запятых/тире) элементы. По поводу "цифр" - к примеру слово "H1N1" - это слово из скольки букв? И нужно ли его по алгоритму оставить или убрать, или вообще считать за 2 однобуквенных слова побитых "цифрами"? В общем ТЗ требует серьёзного уточнения ------------------ WBR, Igor |
Re: Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
Спасибо! То что и нужно. А таким же способом можно пробел вставить между знаком препинания и буквой? |
Re: Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
Цифры нельзя удалять ни в каких вариантах, слова на удаление только без цифр. |
Re: Вырезать слова из строки | |
---|---|
Рома Сообщений: 1079 Дата регистрации: 06.06.2001 |
Почитай о синтаксисе регулярных выражений msdn.microsoft.com |
Re: Вырезать слова из строки | |
---|---|
dfr Автор Сообщений: 254 Откуда: Барнаул Дата регистрации: 29.07.2005 |
Спасибо Роман!
Периодически пытался, не шибко нужно было наверно ... |
© 2000-2024 Fox Club  |