gpt4 book ai didi

Delphi tstringlist 在列表中查找否定关键字

转载 作者:行者123 更新时间:2023-12-02 08:37:25 29 4
gpt4 key购买 nike

我有两个正在使用的字符串列表。一个具有关键字列表,另一个具有否定关键字列表。我希望能够搜索列表并挑选出不包含否定关键字的列表项并输出到第三个关键字列表。我使用的是 AnsiPos 函数,但是如果否定关键字是单词的一部分,而不是完整的单词,那么它会找到否定关键字。

有什么关于相对简单的方法的建议吗?速度并不那么重要,但会很好。

我想要做的事情的示例:

关键字列表:

Cat CatfishFish SticksDog Food

Negative Keyword List:

Fish

Returned Values Wanted:

Cat CatfishDog Food

This is what I've got so far.. which does not work. I used information from: 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;

最佳答案

如果空格是您需要担心的唯一单词分隔符,那么您可以使用 AnsiPos 进行整个单词匹配,方法是在关键字和否定关键字之前和之后添加一个空格,即

AnsiPos(' '+SubStr+' ', ' '+Str+' ')

您需要一个循环来检查否定关键字列表中的每个条目。

关于Delphi tstringlist 在列表中查找否定关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039372/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com