加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 检查字符是否包含在char数组中的最佳方法

发布时间:2020-12-15 09:21:25 所属栏目:大数据 来源:网络整理
导读:我知道,我可以写 if C in ['#',';'] then ... 如果C是AnsiChar. 但是这个 function CheckValid(C: Char; const Invalid: array of Char; OtherParams: TMyParams): Boolean;begin Result := C in Invalid; // -- Error because Invalid is an array not a se
我知道,我可以写

if C in ['#',';'] then ...

如果C是AnsiChar.

但是这个

function CheckValid(C: Char; const Invalid: array of Char; OtherParams: TMyParams): Boolean;
begin
    Result := C in Invalid;    // <-- Error because Invalid is an array not a set
    //maybe other tests...
    //Result := Result and OtherTestsOn(OtherParams);
end;

产生E2015:运算符不适用于此操作数类型.

有没有一种简单的方法可以检查字符是否包含在字符数组中(除了遍历数组)?

解决方法

我知道你不想这样做,但这是其中一个例子,因为性能原因,迭代数组确实是你最好的选择:

function CheckValid(C: Char; const Invalid: array of Char): Boolean;
var
  I: Integer;
begin
  Result := False;
  for I := Low(Invalid) to High(Invalid) do begin
    if Invalid[I] = C then begin
      Result = True;
      Exit;
    end;
  end;
end;

要么:

function CheckValid(C: Char; const Invalid: array of Char): Boolean;
var
  Ch: Char;
begin
  Result := False;
  for Ch in Invalid do begin
    if Ch = C then begin
      Result = True;
      Exit;
    end;
  end;
end;

将输入数据转换为字符串只是为了搜索它可能会导致巨大的性能瓶颈,尤其是在经常调用该函数时,例如在循环中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读