powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поскажите алгоритм сравнения строк
25 сообщений из 32, страница 1 из 2
Поскажите алгоритм сравнения строк
    #39312109
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сравнить два похожих текста и подсветить отличающиеся части, например как это делает Araxis Merge.
Попробовал погуглить, но гуглятся лишь алгоритмы сравнения типа одинаковые/разные, меряющиеся производительностью.
А мне нужно, например, на выходе получить два массива, в которых чередуются одинаковые и разные куски исходных строк.
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312120
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diff чем не устраивает?
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312124
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, тебе подойдут алгоритмы поиска [наибольшей] общей подстроки? Нашёл (есссно, вменяемо некороткие), вырезал (есссно запомнив, откуда), нашёл, вырезал... а что останется - то и есть различия.
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312140
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owldiff чем не устраивает?
дифф из цигвина не сравнивает кирилицу вроде?
или в ютифи8 он её сравнивает?
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312154
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owldiff чем не устраивает?а это что?
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312170
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyWhite Owldiff чем не устраивает?а это что?утилита такая из стандартного набора GNU распространяющаяся в исходниках во всех дистрибутивах линуксов.
Тебе ж алгоритм нужен? Ну так возьми и прочитай работающий пример.
https://www.gnu.org/software/diffutils/
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312309
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyWhite Owldiff чем не устраивает?а это что?
в первую очередь алгоритм поиска совпадающей подцепочки максимальной длины
или же старая добрая юниксовая утилита
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312348
command.com
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собственно алгоритм - http://www.angusj.com/delphi/textdiff.html
но работает _построчно_
для "подсветить отличающиеся части, например как это делает Araxis Merge" придется допиливать - перед скармливанием алгоритму разбивать текст _пословно_
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312397
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

ex1

abc def gkm & abc def 123 gkm

Согласно вашей логике 123 будет подсвечено.

ex2
abc 123 def gkm & abc def 123 gkm

Будет ли что-то подсвечено в данном примере, и что именно?
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312532
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryex2
abc 123 def gkm & abc def 123 gkm

Будет ли что-то подсвечено в данном примере, и что именно?будет подсвечено 123 в обеих строках.
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312538
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
command.comсобственно алгоритм - http://www.angusj.com/delphi/textdiff.html
но работает _построчно_
для "подсветить отличающиеся части, например как это делает Araxis Merge" придется допиливать - перед скармливанием алгоритму разбивать текст _пословно_не подходит, нужно подсвечивать и куски слов.
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312546
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312648
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, только мне самому нужно такое в html забацать.
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312713
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312731
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На гитхабе что-то было
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312741
command.com
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariyне подходит, нужно подсвечивать и куски слов.ты бы разобрался получше сначала
алгоритм работает с двумя списками (последовательностями) неких сущностей (например, строк или символов или каких-то кусков текста), сравнивая их посущностно (покусочно)
разбивка на эти куски - вне ответственности алгоритма, ему на вход подаются предварительно подготовленные последовательности.

если сразу скормить ему отдельные символы - на выходе будет полная каша.
имеет смысл сначала дать ему пару текстов, разбитых на строки, затем - пары _несовпадающих_ групп строк, разбитых на слова, а уже затем, если нужно - пары _несовпадающих_ слов посимвольно, чтобы получить подсветку отдельных символов, а не слов целиком
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312743
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariySashaMercuryex2
abc 123 def gkm & abc def 123 gkm

Будет ли что-то подсвечено в данном примере, и что именно?будет подсвечено 123 в обеих строках.

А почему не def?
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312801
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryAntonariyпропущено...
будет подсвечено 123 в обеих строках.

А почему не def?потому что abc 123 def и abc def отличаются лишь отсутствием 123.

в общем, сделал на алгоритме наибольшей общей подстроки по совету Akina, всем спасибо.

работает не идеально, но ко всему, чему нужно, внимание привлекает:
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39312947
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, делал сам похожую штуку.

Есть разные алгоритмы создания диффов - они отличаются используемой эвристикой, т.к. "честный" дифф достаточно тяжел вычислительно.

На что следует обратить внимание:
- https://ru.wikipedia.org/wiki/Наибольшая_общая_подстрока
- https://ru.wikipedia.org/wiki/Расстояние_Левенштейна - обобщить для удаления и вставки подстрок вместо отдельных символов
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39313056
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariySashaMercuryпропущено...


А почему не def?потому что abc 123 def и abc def отличаются лишь отсутствием 123.

в общем, сделал на алгоритме наибольшей общей подстроки по совету Akina, всем спасибо.

работает не идеально, но ко всему, чему нужно, внимание привлекает:

строки не такие. А такие:

abc 123 def и abc def 123
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39313163
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryAntonariyпропущено...
потому что abc 123 def и abc def отличаются лишь отсутствием 123.

в общем, сделал на алгоритме наибольшей общей подстроки по совету Akina, всем спасибо.

работает не идеально, но ко всему, чему нужно, внимание привлекает:

строки не такие. А такие:

abc 123 def и abc def 123а если бы были abc def 123 и abc 123 def, то подсветилось бы def.
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39313202
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyесли бы были abc def 123 и abc 123 def, то подсветилось бы def.В рамках задачи на поиск отличающихся вставок это имхо некорректно.
SashaMercuryex2
abc 123 def gkm & abc def 123 gkm

Будет ли что-то подсвечено в данном примере, и что именно?
Мне кажется, что корректная подсветка должна быть такой:
abc 123 def gkm | abc def 123 gkm
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39313255
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaМне кажется, что корректная подсветка должна быть такой:
abc 123 def gkm | abc def 123 gkm
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39313260
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaМне кажется, что корректная подсветка должна быть такой:
abc 123 def gkm | abc def 123 gkm
а почему не такой вариант?
abc 123 def gkm | abc def 123 gkm
...
Рейтинг: 0 / 0
Поскажите алгоритм сравнения строк
    #39313479
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)а почему не такой вариант?В подавляющем большинстве случаев сравниваются исходная и конечная версии. А показанный вариант хорош для сравнения двух независимых конечных версий.
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поскажите алгоритм сравнения строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]