Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.02.2010, 21:06
Misterhomer Misterhomer вне форума
Прохожий
 
Регистрация: 30.12.2009
Сообщения: 22
Репутация: 10
По умолчанию Работа с Strings

Задан текст имеющий в себе пробелы, запятые и другие знаки препинания (например const r = [ '',',',';','!','?']) нужно разработать программу, которая удаляет из текста все слова повторения вхождения слов (т.е. исключить слова повторяющихся)
Ответить с цитированием
  #2  
Старый 11.02.2010, 20:32
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

Че-та не понял. Тебе нужно удалить повторяющиеся слова чтоли?
Ответить с цитированием
  #3  
Старый 12.02.2010, 10:31
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Разбиваешь предложения на слова, загоняешь в массив и с ним работаешь
Код:
//Разбить строку на слова
Procedure DevideStrOnWords(Str : String);
var
CurPos, LengthStr  : byte;
Ch : WideString;
ListWords := TStringList;
begin
ListWords := TStringList.Create;
//Преобразование всех разделительных знаков в пробелы
Str:=StringReplace(Str,'.',' ',[rfReplaceAll]);
Str:=StringReplace(Str,',',' ',[rfReplaceAll]);
Str:=StringReplace(Str,'!',' ',[rfReplaceAll]);
Str:=StringReplace(Str,'?',' ',[rfReplaceAll]);
//Удаление лишних пробелов
CurPos := 0;
LengthStr := Length(Str);
repeat
inc(CurPos);
Ch := Copy(Str, CurPos ,1);
if Ch = ' ' then begin
 while Copy(Str, CurPos+1, 1) = ' ' do begin
  Str := Copy(Str, 1, CurPos)+Copy(Str, CurPos+2, LengthStr-CurPos+1);
  Dec(LengthStr);
 end;
end;
until
CurPos=Length(Str);
//Форматировние пробелов в символ конец строки
Str:=StringReplace(Str,' ',#13#10,[rfReplaceAll]);
//Загоняешь строку в StringList, а это массив слов
ListWords.text := Str;
end;
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #4  
Старый 12.02.2010, 11:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вместо вот этого:
Код:
//Преобразование всех разделительных знаков в пробелы
Str:=StringReplace(Str,'.',' ',[rfReplaceAll]);
Str:=StringReplace(Str,',',' ',[rfReplaceAll]);
Str:=StringReplace(Str,'!',' ',[rfReplaceAll]);
Str:=StringReplace(Str,'?',' ',[rfReplaceAll]);
Можно использовать несколько компактнее вариант:
Код:
Str:=WrapText(Str,#32,['.', ',', '!', '?'],1);
 
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 12.02.2010, 14:44
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Спасибо за вариант!!!
Но немного не то, эта функция не уберет из текста символы . , ! ? и т.д.
Она просто разобьет строку на подстроки...фактически добавив в конец подстрок #32.
http://www.delphisources.ru/pages/fa...pText.php.html
Поэтому я использовал StringReplace
http://www.delphisources.ru/pages/fa...place.php.html
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #6  
Старый 12.02.2010, 14:54
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

И верно, я видимо погорячился.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:43.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025