Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.19;
Скачать: CL | DM;

Вниз

Как сравнить 2 предложения (разные разделители)?   Найти похожие ветки 

 
New_ser   (2008-09-09 08:03) [0]

Есть два предложения. Слова в них одинаковые, одинаковый порядок расположения слов. Разное - регистр (ну это можно, в принципе, быстро исправить), и, самое главное - разделитель между словами: пробел, два пробела, встречаются скрытые символы... Вот как можно организовать сравнение 2-х предложений по словам?


 
MBo ©   (2008-09-09 08:06) [1]

заменить все разделители или слитные их комбинации на один разделитель, потом сравнивать. Можно и не заменять, а просто пропускать разделители при обработке строки


 
brother ©   (2008-09-09 08:14) [2]

1. пробегам по всем строкам и убираем все не нужные символы (в том числе и не печатные)
2. приводим в нужный регистр
3. сравниваем
примеров всех пунктов в инете навалом...


 
New_ser   (2008-09-09 08:43) [3]

> убираем все не нужные символы (в том числе и не печатные)

Спасибо! Идея мне понравилась! ) Буду с ней работать!
И, всё-же, как можно "выдернуть" слово из предложения, чтобы проверить его наличие во втором? Есть вероятность, что потом придётся использовать этот механизм на целых абзацах, и там уже порядок не гарантирован! Особо буду благодарен за пример (именно выборки слова из предложения)!


 
brother ©   (2008-09-09 08:45) [4]

pos поможет? спраку почитай, авось сгодится)


 
New_ser   (2008-09-09 09:07) [5]

> brother ©   (09.09.08 08:45) [4]

"pos поможет", когда удастся найти механизм "выдёргивания" слова из текста. Вот тогда с помощь pos можно будет проверить его наличие во втором! )


 
clickmaker ©   (2008-09-09 09:12) [6]

> механизм "выдёргивания"

разделители слов известны? пробелы, знаки пунктуации. Вот и выдергивай


 
brother ©   (2008-09-09 09:14) [7]

> И, всё-же, как можно "выдернуть" слово из предложения, чтобы
> проверить его наличие во втором?

бежим по предложению (читаем посимвольно в буфер (buf:=buf+фраза[текущая позиция]))... как только дошли до пробела, содержимое буфера содержит слово 8), делаем что надо со словом, очищаем буфер итд итп ))) как то так...


 
brother ©   (2008-09-09 09:15) [8]

> знаки пунктуации. Вот и выдергивай

это тоже учитываем...


 
New_ser   (2008-09-09 09:26) [9]

Дело в том, что я что-то слышал о "поисках по маске"! Пробегаться по каждому символу - это-ж сколько времени займёт!?


 
brother ©   (2008-09-09 09:29) [10]

> Пробегаться по каждому символу - это-ж сколько времени займёт!
> ?

совсем маленько)

> поисках по маске

ну бывает)
зы у тебя с каждым постом как в страшной сказке- чем дальше, тем страшнее)


 
clickmaker ©   (2008-09-09 09:38) [11]

> Дело в том, что я что-то слышал о "поисках по маске"!

а как ты думаешь поиск по маске работает?
тоже посимвольно
Посмотри MatchesMask в исходниках Дельфи ради интереса


 
Ega23 ©   (2008-09-09 09:47) [12]


> Дело в том, что я что-то слышал о "поисках по маске"! Пробегаться
> по каждому символу - это-ж сколько времени займёт!?


Если написать по-умному, то в один проход всё разобрать можно.


 
MBo ©   (2008-09-09 10:00) [13]


i := 1;
j := 1;
while (i <= Length(s1)) and (j <= Length(s2)) do begin
 if not (s1[i] in Letters) then
   Inc(i)
 else  
   if not (s2[j] in Letters) then
      Inc(j)
    else  
      if s1[i] <> s2[j] then begin
        строки не совпадают
        Break        
      end
end;



Страницы: 1 вся ветка

Текущий архив: 2008.10.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
2-1220876858
programmer90
2008-09-08 16:27
2008.10.19
как убрать у комбобокса убрать эту штуку справа


2-1221116374
vegarulez
2008-09-11 10:59
2008.10.19
Как маскировать символ находящийся в текстовой строке?


15-1219737191
Bless
2008-08-26 11:53
2008.10.19
Какова вероятность...


15-1220028990
DevilDevil
2008-08-29 20:56
2008.10.19
Соотношение сторон монитора. Потестируйте, пожалуйста.


15-1220009159
konstantin
2008-08-29 15:25
2008.10.19
Клиент-Сервер-Сервер-База