Форум: "Начинающим";
Текущий архив: 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