У меня есть два строковых списка, с которыми я работаю. Тот, у которого есть список ключевых слов, а затем другой, который имеет список минус-слов. Я хочу, чтобы иметь возможность выполнять поиск по списку и выбирать элементы списка, которые не содержат отрицательное ключевое слово и выводятся в третий список ключевых слов. Я использовал функцию AnsiPos, но нашел минус-слова, если они были частью слова, а также полным словом.Delphi stringlist, содержащий отрицательное ключевое слово в списке
Любые предложения относительно относительно простого способа сделать это? Скорость не так важна, но было бы неплохо.
Пример того, что я ищу делать: Список
Ключевое слово:
Cat Catfish Fish Sticks Dog Food
Отрицательный Список ключевых слов:
Fish
Возвращаемые значения Требуются:
Cat Catfish Dog Food
Это то, что у меня есть до сих пор .. это не работает. Я использовал информацию: Is There An Efficient Whole Word Search Function in Delphi?
function ExistWordInString(aString: PAnsichar; aSearchString: string;
aSearchOptions: TStringSearchOptions): Boolean;
var
Size : Integer;
begin
Size := StrLen(aString);
result := SearchBuf(aString, Size, 0, 0, aSearchString, aSearchOptions) <> nil;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
i, j, index: integer;
s: string;
stl: tstringlist;
begin
stl := TStringList.Create;
stl.Text := listbox1.Items.Text;
for I := 0 to stl.Count - 1 do
begin
for j := 0 to listbox2.Count - 1 do
begin
if not ExistWordInString(PAnsiChar(listbox2.Items.Strings[j]),
listbox1.Items.Strings[i], [soWholeWord, soDown])
then
listbox3.Items.Append(stl.Strings[i]);
end;
end;
end;
Спасибо всем, кто помог с этим. Это отлично работает для моих нужд! работайте с Delphi 10 при обновлении. – Brad