我只是想知道Delphi中比较字符串CompareStr和=比较字符串之间的区别.两者都产生相同的结果.
if(str2[i] = str1[i]) then
ShowMessage('Palindrome')
if(CompareStr(str2[i], str1[i]) = 0) then
ShowMessage('Palindrome')
Run Code Online (Sandbox Code Playgroud)
两者都显示消息Palindrome.
Rob*_*edy 18
CompareStr当您只想查看两个字符串是否相等时,以及当您想知道一个字符串相对于另一个字符串的比较时,请不要使用.它将返回一个值小于0,如果第一自变量出现第一,asciibetically,它将返回大于零的值大,如果第一自变量属于后的第二个.
没有CompareStr,你可能有这样的代码:
if str1[i] = str2[i] then begin
// They're equal
end else if str1[i] < str2[i] then begin
// str1 comes first
end else begin
// str2 comes first
end;
Run Code Online (Sandbox Code Playgroud)
相比之下str1及str2两次.使用CompareStr,您可以删除其中一个字符串比较,并用更便宜的整数比较替换它:
x := CompareStr(str1[i], str2[i]);
if x = 0 then begin
// They're equal
end else if x < 0 then begin
// str1 comes first
end else begin
// str2 comes first
end;
Run Code Online (Sandbox Code Playgroud)
正如Gerry的回答所解释的那样,该函数在排序函数时特别有用,特别是因为它具有与其他比较函数相同的接口,例如CompareText和AnsiCompareStr.排序函数是模板方法,每个函数都用作比较策略.
如果您只想测试相等性,请使用=运算符 - 它更容易阅读.CompareStr当您需要它提供的额外功能时使用.
假设STR1和STR2是字符串,而不是阵列(或列表)或串,第一个版本将是更有效的,如在第二版本将第一复制str1[i]和str2[i]两个新的字符串,然后调用一个函数,与相关联的开销.
第一个版本将简单地比较str1 [i]和str2 [i]引用的单个字符
如果您只对字符串相同感兴趣,请使用=.如果你需要知道字符串是否相同,或者哪个字符串更大,那么使用CompareStr.
CompareStr在排序列表时特别有用,例如,使用TList.Sort(CompareFunc)或TStringList.Sort(CompareFunc)
如果需要不区分大小写的比较,请使用CompareText.