Что нового

Как сравнить 2-е текстовые строки на схожесть

forfrends

Новичок
Сообщения
176
Репутация
3
Добрый день!
Можно ли как-то сравнить две строки на схожесть?
На пример строка 1 (контрольная):
[box title=TitleBox]"Это контрольный текст"[/box]
строка 2:
[box title=TitleBox]"это Контрольный текст"[/box]
Я выделил то что является отличием, но строки схожи.
Но если проблема будет более сложной? Например вводимый текст написан безграмотно, с ошибками, как его сравнить на схожесть с контрольным текстом?
Можно пример?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Что значит "на схожесть"? Либо строки равны, либо нет (см. StringCompare()). Или нужна именно орфография?
 
Автор
F

forfrends

Новичок
Сообщения
176
Репутация
3
Нет, орфография не важна.
Допустим в программу вложен шаблон, и когда пользовательвводит какую-то информацию программа сравнивает ее с шаблоном, и если % совпадения высок - значит введена нужная информация.
Пример:
Шаблон: "Автомобиль"
вводимый текст 1 : "автамабиль"
% совпадения = 80%
вводимый текст 2 : "машина"
% совпадения = 0%

примерно так.. Надеюсь смог толково объяснить мысль


Добавлено:
Сообщение автоматически объединено:

дает 3 варианта ответа, и как они мне помогут не имею представления.
Из справки:
[box title=TitleBox]Возвращаемое значение
0 строки совпадают
положительное число string1 больше string2
отрицательное число string1 меньше string2[/box]

Но что мне дают положительное или отрицетельное числа? Как с ними работать?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
$Str1 = 'Автомобиль'
$Str2 = 'автамабиль'

$Length = StringLen($Str1)
If ($Length) And (StringLen($Str2) = $Length) Then
	$Count = 0
	For $i = 0 To $Length - 1
		If StringLeft(StringTrimLeft($Str1, $i), 1) = StringLeft(StringTrimLeft($Str2, $i), 1) Then
			$Count += 1
		EndIf
	Next
	ConsoleWrite('Совпадение: ' & Round($Count / $Length * 100) & '%' & @CR)
EndIf
 
Верх