我如何检查字符串是否存在于数组中?

问题描述 投票:16回答:3

我有此代码:

var
  ExtString: string;
const
  Extensions : array[0..4] of string = ('.rar', '.zip', '.doc', '.jpg', '.gif');

if ExtString in Extensions then

在最后一行,我得到一个错误:

[[DCC错误] E2015运算符('then')不适用于此操作数类型

我认为我无法做到这一点,那么如何正确执行任务?

arrays string delphi
3个回答
23
投票

您已经发现,您无法使用in在字符串数组中检查字符串。

您可以使用此功能代替if语句。

function StrInArray(const Value : String;const ArrayOfString : Array of String) : Boolean;
var
 Loop : String;
begin
  for Loop in ArrayOfString do
  begin
    if Value = Loop then
    begin
       Exit(true);
    end;
  end;
  result := false;
end;

您可以这样称呼它。

if StrInArray(ExtString,Extensions) then

StrUtils.pas已定义。

function MatchStr(const AText: string; const AValues: array of string): Boolean; 

9
投票

从常量数组​​初始化TStringList实例,并使用IndexOf()。


0
投票

有时最简单的解决方案不是最明显的

var
  ExtString: string;
const
  Extensions : string = ('.rar,.zip,.doc,.jpg,.gif');

if Pos(ExtString, Extensions) > 0 then
© www.soinside.com 2019 - 2024. All rights reserved.