使用Delphi在另一个字符串中查找变量字符串

时间:2018-05-25 08:02:22

标签: string delphi

给定字段/字符串,如' G,H,1,AA,T,AAA,1,E,A,H,....'。字符可以是任何组合/顺​​序。 如何搜索该字符串并在搜索“A' A'或者' AA'? 即如果搜索说'A',它应该只找到' A' E& E之间H。 问候& TIA, 伊恩

2 个答案:

答案 0 :(得分:2)

将此字符串拆分为一个列表,例如使用TStringList.CommaText(或者使用StrUtils.SplitString()放入数组中。)

然后,只需遍历列表并检查每个字符串(或使用TStrings.IndexOf() - 注意:它使用CaseSensitive属性,正如Remy在评论中提到的那样。)

如果要对同一列表进行多次查询 - 对其进行排序并使用有效的二进制搜索(TStringList.Find())。

答案 1 :(得分:2)

您可以通过分隔符将字符串拆分为数组,并在该数组中搜索,例如

Charge

如果您需要在数据中搜索多个项目,可能需要对数组进行排序并使用二进制搜索。

function FindItem(const List, Item: string): Boolean;
var
  SArr: TArray<string>;
  S: string;
begin
  Result := False;
  //Separators could also be a parameter
  SArr := List.Split([',']);
  for S in SArr do
  begin
    //use S.Trim if needed
    //use AnsiSameText(S, Item) for case insensitive check
    if Item = S then
      Exit(True);
  end;
end;

另一种方法是使用带有单词边界的正则表达式来搜索整个单词

TArray.Sort<string>(SArr);
Result := TArray.BinarySearch(SArr, Item, Tmp);