Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизСравнение строк Найти похожие ветки
← →
Krants (2006-11-24 17:43) [0]Знает ли кто функцию(может завалялся алгоритм) осуществляющую сравнение строк одна из которой может быть задана в форме маски(т.е. "*иванов*получил ? балов*").
И возвращаемая булевский результат?
← →
zdm © (2006-11-24 17:51) [1]использу БД, и оператор LIKE решит все твои проблемы
← →
Krants (2006-11-24 17:57) [2]
> использу БД, и оператор LIKE решит все твои проблемы
точно! только вот напряжно будет компоненту, для которого нужен этот алгоритм...
← →
zdm © (2006-11-24 17:59) [3]select ... from ... where name LIKE %ива% and bal=5;
if fields[0].asstring="" then showmessage("нет такого человечка")
← →
Krants (2006-11-24 18:07) [4]вот так всегда, сам спрашиваю и сам же нахожу ответ...
держите может кому-то и пригодится{
Данная функция осуществляет сравнение двух строк. Первая строка
может быть любой, но она не должна содержать символов соответствия (* и ?).
Строка поиска (искомый образ) может содержать абсолютно любые символы.
Для примера: MatchStrings("David Stidolph","*St*") возвратит True.
Автор оригинального C-кода Sean Stanley
Автор портации на Delphi David Stidolph
}
function MatchStrings(source, pattern: string): Boolean;
var
pSource: array[0..255] of Char;
pPattern: array[0..255] of Char;
function MatchPattern(element, pattern: PChar): Boolean;
function IsPatternWild(pattern: PChar): Boolean;
var
t: Integer;
begin
Result := StrScan(pattern, "*") <> nil;
if not Result then
Result := StrScan(pattern, "?") <> nil;
end;
begin
if 0 = StrComp(pattern, "*") then
Result := True
else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
Result := False
else if element^ = Chr(0) then
Result := True
else
begin
case pattern^ of
"*": if MatchPattern(element, @pattern[1]) then
Result := True
else
Result := MatchPattern(@element[1], pattern);
"?": Result := MatchPattern(@element[1], @pattern[1]);
else
if element^ = pattern^ then
Result := MatchPattern(@element[1], @pattern[1])
else
Result := False;
end;
end;
end;
begin
StrPCopy(pSource, source);
StrPCopy(pPattern, pattern);
Result := MatchPattern(pSource, pPattern);
end;
← →
Virgo_Style © (2006-11-24 18:34) [5]MatchesMask, регулярные выражения
← →
Krants (2006-11-24 18:39) [6]уже понял, вот раньше бы сказал...
← →
Anatoly Podgoretsky © (2006-11-24 18:46) [7]> Krants (24.11.2006 17:43:00) [0]
MatchesMask
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.019 c