Тема: AHK: Метод SIFT3, добавить поддержку русских символов
Мне нужно узнать разницу между двумя строками, я взял код отсюда: https://autohotkey.com/board/topic/5498 … algorithm/.
Но я заметил, что есть разница между русскими и англ буквами, точнее разница между регистром.
stringDiff(string1, string2, maxOffset = 5)
{
if (string1 = string2)
return (string1 == string2 ? 0/1 : 0.2/StrLen(string1))
if (string1 = "" OR string2 = "")
return (string1 = string2 ? 0/1 : 1/1)
StringSplit, n, string1
StringSplit, m, string2
ni := 1, mi := 1, lcs := 0
While((ni <= n0) AND (mi <= m0))
{
if (n%ni% == m%mi%)
EnvAdd, lcs, 1
else if (n%ni% = m%mi%)
EnvAdd, lcs, 0.8
else
{
Loop, %maxOffset%
{
oi := ni + A_Index, pi := mi + A_Index
if ((n%oi% = m%mi%) AND (oi <= n0))
{
ni := oi, lcs += (n%oi% == m%mi% ? 1 : 0.8)
Break
}
if ((n%ni% = m%pi%) AND (pi <= m0))
{
mi := pi, lcs += (n%ni% == m%pi% ? 1 : 0.8)
Break
}
}
}
EnvAdd, ni, 1
EnvAdd, mi, 1
}
return ((n0 + m0)/2 - lcs) / (n0 > m0 ? n0 : m0)
}
msgbox, % stringDiff("AHK", "AhK")
msgbox, % stringDiff("АХК", "АхК")
Что можно придумать? Я так понимаю дело в "=" и "==", оно работает только на англ буквы (как "i" в регулярных выражениях).
В идеале иметь возможность включать/выключать поддержку регистра (то есть, чтобы буквы в разном регистре считались за разные, а не за 0.8).