德尔福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 }
我只需要这个返回一个true或false值,如果“道”是的字符串中。
因为标准的查找对话框具有“仅匹配整个单词”作为它的一个选项,所以在某处应该有一些东西。
这是如何实现的(或最好的)?
结论:
RRUZ的答案是完美的。 SearchBuf例程正是我所需要的。我甚至可以进入StrUtils例程,提取代码并对其进行修改以符合我的要求。
我很惊讶地发现,SearchBuf不会先搜索该词,然后检查分隔符。相反,它一次遍历字符串中的字符,寻找分隔符。如果它找到一个,那么它检查字符串和另一个分隔符。如果它没有找到它,它会查找另一个分隔符。为了提高效率,这非常聪明!
不错!您现在将自己的解决方案发布在您自己的博客上,网址为:http://theroadtodelphi.wordpress.com/2009/11/05,因为我做了进一步的调查。感谢您提供的额外信息。 – lkessler 2009-11-06 04:54:48
'ExistWordInString('Delphi','Delphi'[soWholeWord,soDown]);'失败。查看[SearchBuf soWholeWord意外输出](http://stackoverflow.com/q/25877986/576719)。 – 2014-09-16 21:12:35