我有两个正在使用的字符串列表。一个有关键字列表,另一个有否定关键字列表。我希望能够在列表中搜索并挑选出不包含否定关键字的列表项并输出到第三个关键字列表。我使用的是 AnsiPos 函数,但是如果它们是单词的一部分,它会找到否定关键字,而不是完整的单词。
关于相对简单的方法有什么建议吗?速度不是那么重要,但会很好。
我想要做的例子:
关键字列表:
猫 鲶鱼 鱼棒 狗粮
否定关键字列表:
鱼
想要的返回值:
猫 鲶鱼 狗粮
这就是我到目前为止所得到的......这是行不通的。我使用的信息来自: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;