加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi中有一个高效的全字搜索功能吗?

发布时间:2020-12-15 04:23:19 所属栏目:大数据 来源:网络整理
导读:在Delphi 2009或更高版本(Unicode)中,是否有任何内置函数或小程序在某处编写,可以进行合理有效的全字搜索,其中提供定义单词的分隔符,例如: function ContainsWord(Word,Str: string): boolean;const { Delim holds the delimiters that are on either side
在Delphi 2009或更高版本(Unicode)中,是否有任何内置函数或小程序在某处编写,可以进行合理有效的全字搜索,其中提供定义单词的分隔符,例如:
function ContainsWord(Word,Str: string): boolean;

const  { Delim holds the delimiters that are on either side of the word }
  Delim = ' .;,:(){}"/&;>!?[]'#$91#$92#$93#$94'-+*='#$A0#$84;

哪里:

Word: string;  { is the Unicode string to search for }
Str: string;   { is the Unicode string to be searched }

如果“Word”在字符串中,我只需要它返回true或false值.

在某个地方必定有这样的东西,因为标准的查找对话框具有“仅匹配整个单词”作为其中一个选项.

这通常(或最好)如何实施?

结论:

RRUZ的答案很完美. SearchBuf例程正是我所需要的.我甚至可以进入StrUtils例程,提取代码,并根据我的要求进行修改.

我很惊讶地发现SearchBuf不首先搜索该单词然后检查分隔符.相反,它一次查找字符串的字符,寻找分隔符.如果找到一个,则检查字符串和另一个分隔符.如果找不到,则查找另一个分隔符.为了效率,这非常聪明!

解决方法

您可以使用[soWholeWord]选项使用 SearchBuf功能.
function SearchBuf(Buf: PAnsiChar; BufLen: Integer; SelStart: Integer; SelLength: Integer; SearchString: AnsiString; Options: TStringSearchOptions): PAnsiChar;

看这个例子

function ExistWordInString(aString:PWideChar;aSearchString:string;aSearchOptions: TStringSearchOptions): Boolean;
var
  Size : Integer;
Begin
      Size:=StrLen(aString);
      Result := SearchBuf(aString,Size,aSearchString,aSearchOptions)<>nil;
End;

以这种方式使用它

ExistWordInString('Go Delphi Go','Delphi',[soWholeWord,soDown]);

再见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读