delphi – 最好的方法来找到一个字符串是否在一个列表(没有泛型)

我想做这样的事情:
Result = 'MyString' in [string1,string2,string3,string4];

这不能用于字符串,我不想这样做:

Result = (('MyString' = string1) or ('MyString' = string2));

另外我认为,创建一个StringList来做这只是太复杂。

有没有其他方法来实现这一点?

谢谢。

解决方法

你可以使用AnsiIndexText(const AnsiString AText,const数组的字符串AValues):integer或MatchStr(const AText:string; const AValues:string of string):Boolean;

就像是

Result := (AnsiIndexText('Hi',['Hello','Hi','Foo','Bar']) > -1);

要么

Result := MatchStr('Hi',['foo','Bar']);

AnsiIndexText returns the 0-offset
index of the first string it finds in
AValues that matches AText
case-insensitively. If the string
specified by AText does not have a
(possibly case-insensitive) match in
AValues,AnsiIndexText returns –1.
Comparisons are based on the current
system locale.

MatchStr determines if any of the
strings in the array AValues match the
string specified by AText using a case
sensitive comparison
. It returns true
if at least one of the strings in the
array match,or false if none of the
strings match.

注意AnsiIndexText不区分大小写,MatchStr是区分大小写,所以我想它取决于你的使用

编辑:2011-09-3:刚刚发现这个答案,并想到我会添加一个注释,在Delphi 2010中还有一个MatchText函数,它与MatchStr相同,但case insenstive。 – 拉里

相关文章

ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:...
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。 1.CreateProcess因为使用复杂...
API原型: Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (By...