标准Delphi RTL字符串比较例程通过ASCII排序比较字符串。
就我而言,词典排序仅基于字母表的字母; 是字典中使用的订购系统。
是否有Delphi本机函数按字典顺序比较字符串?目前,我不需要复杂的解决方案来支持除英语之外的字母表。
我不知道有关字典排序系统的详细规则,但我知道其中一条规则,即这个排序系统会处理例如 ab 大于 aa 的。然而,这是基于我对手中英语词典的观察。或许,仍有一些我不关心的规则。
答案 0 :(得分:3)
AnsiCompareText
函数正在进行不区分大小写的字符串比较,并将系统区域设置的排序顺序考虑在内。
为了确保我在具有1251代码页的系统上运行以下测试:
procedure Test;
var
S1, S2: string;
begin
S1:= 'им';
S2:= 'ём';
Writeln(IntToHex(Integer(S1[1]), 4)); // 0438
Writeln(IntToHex(Integer(S2[1]), 4)); // 0451
Writeln(AnsiCompareText(S1, S2)); // 1 (means S1 > S2)
end;
你可以看到字母'и'的代码(0x0438)小于字母'ё'(0x0451)但俄语字母'ё'先于'и',AnsiCompareText
函数比较'ё '和'и'根据俄语字母表的规则,而不是根据他们的代码的数值。