| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > как сравнить две строки |
| Автор: BSOD 10.1.2005, 20:52 |
| У меня есть две строки например: У меня сгорел проц и Я купил новый проц Можно ли сравнить эти две строки на предмет обнаружения одинаковых слов (здесь Проц, но могут быть любые), а потом в зависимости от результата что-нибудь сделать? |
| Автор: Satana 10.1.2005, 22:34 |
| maximum ну можно только тебе нада будет писать парсер который будет выделять отдельные слова в одной строке и сравнивать pos'ом в другой |
| Автор: BSOD 10.1.2005, 22:38 |
| Satana 1. Как его написать? 2. А если строки разной длины? 3. А нельзя как в PHP: загнать строки в массив (по пробелам) и сравнить массивы (если можно, то как?)? |
| Автор: dvs 10.1.2005, 22:41 |
| Не ленись и пиши алгоритм, вреда не будет. Зато, если что-то не так, как надо - значит сам такой, а не дядя Borland виноват. |
| Автор: tcomponent 11.1.2005, 10:15 |
| вот пример простого сравнения слов если не заработаеь то спрашивайте описание юнит с формой на ней батон и два едита по нажатию на клавишу текст каждого едита разделяется на слова и сравнивается "пословно" если слово не совпадает то выводится сообщение с номером несовпадающего слова unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; words0,words1:array [0..50]of string; wcounter,wposition,pposition:integer; wcounter1,wposition1,pposition1:integer; wpcount,wp:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if edit1.text<>'' then wcounter:=1; if edit2.text<>''then wcounter1:=1; for pposition:=0 to Length(edit1.text) do begin if (copy(edit1.text,pposition,1)<>' ')and(copy(edit1.text,pposition,1)<>'.') and(copy(edit1.text,pposition,1)<>',') and(copy(edit1.text,pposition,1)<>'!')and(copy(edit1.text,pposition,1)<>'?')then words0[wcounter]:=words0[wcounter]+uppercase(copy(edit1.text,pposition,1)); if copy(edit1.text,pposition,1)=' ' then begin wcounter:=wcounter+1; end; end; for pposition1:=0 to Length(edit2.text) do begin if (copy(edit2.text,pposition1,1)<>' ')and(copy(edit2.text,pposition1,1)<>'.') and(copy(edit2.text,pposition1,1)<>',') and(copy(edit2.text,pposition1,1)<>'!')and(copy(edit2.text,pposition1,1)<>'?')then words1[wcounter1]:=words1[wcounter1]+uppercase(copy(edit2.text,pposition1,1)); if copy(edit2.text,pposition1,1)=' ' then begin wcounter1:=wcounter1+1; end; end; for wpcount:=0 to wcounter do if words0[wpcount]<>words1[wpcount]then showmessage('Различие в словах номер '+inttostr(wpcount)); end; end. |
| Автор: <Spawn> 11.1.2005, 12:06 | ||
Набросал несложную функцию, с которой, я думаю, ты сможешь узнать о найденных словах все, что нужно:
|
| Автор: BSOD 11.1.2005, 15:45 |
| Всем спасибо, будем пробовать... |