比较部分字符串的最快方法?

Iva*_*nov 2 delphi string comparison delphi-2009

我必须将部分字符串"SKILL_______EU_______WAND_______CLERIC_______BASE_____01"与"SKILL"进行比较.这是为了检查前四个字符是否为"SKILL".或者只是第一个字符,这里需要优化!

我的问题:

  1. 我不知道如何进行优化比较.
  2. 它必须重复35 000次,因此必须非常 快.

谢谢!

Ger*_*oll 11

使用StrUtils.AnsiStartsStr区分大小写,StrUtils.AnsiStartsText不区分大小写(将StrUtils添加到uses子句)


180*_*ION 6

现在35000次重复真的不是那么多,你做什么可能并不重要.

  • 尽管它可能很明智,但它实际上并没有回答问题,无论问题究竟是什么。所以我当然可以理解这被否决了。 (2认同)

Hen*_*man 5

如果你真的想要最好的速度,你必须自己编写一些StartsWith函数.

// untested, case-sensitive
Function StartsWith(const find, text : string) : Boolean;
var i, len : integer;
begin
   result := true;
   len := Min(Length(find), Length(text));
   For i := 1 to len do
   Begin
     if (find[i] <> text[i]) 
     then begin
       result := False;
       break;
     end;
   End;   
end;
Run Code Online (Sandbox Code Playgroud)

  • Delphi已经有一个AnsiStartsStr(区分大小写)/ AnsiStartsText(不区分大小写)函数.没有必要重新实现它.只需使用"StrUtils"单元即可. (8认同)