Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];

Вниз

Как сравнить 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
2-1221206822
N77
2008-09-12 12:07
2008.10.19
Next, Prior (SQL)


15-1219991378
odbc
2008-08-29 10:29
2008.10.19
ODBC DBase драйвер для win2003 64bit


15-1220003252
data
2008-08-29 13:47
2008.10.19
Вопрос к знатокам оракла. Есть ли ограничение на кол-во действий


15-1220009009
wl
2008-08-29 15:23
2008.10.19
компиляция под cygwin


2-1221401730
Виталион
2008-09-14 18:15
2008.10.19
Запустить приложение и считать информацию





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский