检查字符串常量是否包含在一组字符串中
Check if a string constant is contained in a set of strings
在现代 Delphi(悉尼)中最好和最简单的方法是什么:
var ThisExtension: string;
if ThisExtension in ['.jpeg', '.jpg', '.jpe', '.jif', '.jfif'] then
上面的代码给我这个编译器错误:
E2015 Operator not applicable to this operand type
System.StrUtils
单元对此有一个简单的功能:
if System.StrUtils.MatchText(ThisExtension, ['.jpeg', '.jpg', '.jpe', '.jif', '.jfif']) then
我不知道这是否是最现代的方法。 (也许 Generics
有更好的方法?)。但它又快又简单。
也许不是最简单或最优雅的,但你可以使用 TStringList
,例如:
var
Exts: TStringList;
procedure InitExtensions;
begin
Exts := TStringList.Create;
Exts.CaseSensitive := ...; // false by default
Exts.Add('.jpeg');
Exts.Add('.jpg');
Exts.Add('.jpe');
Exts.Add('.jif');
Exts.Add('.jfif');
end;
...
var
ThisExtension: string;
begin
...
if Exts.IndexOf(ThisExtension) <> -1 then
begin
...
end;
...
end;
...
initialization
InitExtensions;
finalization
Exts.Free;
end.
在现代 Delphi(悉尼)中最好和最简单的方法是什么:
var ThisExtension: string;
if ThisExtension in ['.jpeg', '.jpg', '.jpe', '.jif', '.jfif'] then
上面的代码给我这个编译器错误:
E2015 Operator not applicable to this operand type
System.StrUtils
单元对此有一个简单的功能:
if System.StrUtils.MatchText(ThisExtension, ['.jpeg', '.jpg', '.jpe', '.jif', '.jfif']) then
我不知道这是否是最现代的方法。 (也许 Generics
有更好的方法?)。但它又快又简单。
也许不是最简单或最优雅的,但你可以使用 TStringList
,例如:
var
Exts: TStringList;
procedure InitExtensions;
begin
Exts := TStringList.Create;
Exts.CaseSensitive := ...; // false by default
Exts.Add('.jpeg');
Exts.Add('.jpg');
Exts.Add('.jpe');
Exts.Add('.jif');
Exts.Add('.jfif');
end;
...
var
ThisExtension: string;
begin
...
if Exts.IndexOf(ThisExtension) <> -1 then
begin
...
end;
...
end;
...
initialization
InitExtensions;
finalization
Exts.Free;
end.