在Delphi 2009或更高版本(Unicode)中,是否有任何内置函数或小型程序可以进行合理高效的全词搜索,您需要提供定义单词的分隔符,例如:
我只需要返回一个布尔值,如果字符串中包含“Word”,则为true,否则为false。
肯定有相关的内容,因为标准的查找对话框有“仅匹配整个单词”作为其中一个选项。
通常(或最佳)如何实现?
结论:
RRUZ的答案非常完美。 SearchBuf例程正是我所需要的。 我甚至可以进入StrUtils例程,提取代码并修改以适应我的要求。
我惊讶地发现SearchBuf没有首先搜索单词,然后检查分隔符。 相反,它逐个字符地查看字符串中的字符以查找分隔符。 如果它找到一个分隔符,那么它会检查字符串和另一个分隔符。 如果没有找到它,则会查找另一个分隔符。 出于效率的考虑,这非常聪明!
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没有首先搜索单词,然后检查分隔符。 相反,它逐个字符地查看字符串中的字符以查找分隔符。 如果它找到一个分隔符,那么它会检查字符串和另一个分隔符。 如果没有找到它,则会查找另一个分隔符。 出于效率的考虑,这非常聪明!