我只想知道CompareStr
和=
之间在Delphi中比较字符串的区别。两者产生相同的结果。
if(str2[i] = str1[i]) then
ShowMessage('Palindrome')
if(CompareStr(str2[i], str1[i]) = 0) then
ShowMessage('Palindrome')
两者都显示消息回文。
最佳答案
当您只想查看两个字符串是否相等时,不要使用CompareStr
,而要知道一个字符串相对于另一个字符串的比较时,请使用CompareStr
。如果第一个参数第一个出现,它将以小于0的值返回小于0的值;如果第一个参数在第二个之后出现,则它将返回大于零的值。
没有str1
,您可能会具有以下代码:
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;
两次比较
str2
和CompareStr
。使用CompareText
,您可以删除一个字符串比较,然后将其替换为更便宜的整数比较: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;
As Gerry's answer解释说,该函数在排序函数中特别有用,特别是因为它具有与其他比较函数(如
AnsiCompareStr
和=
)相同的接口。排序功能是template method,每个功能都用作比较strategy。如果您要做的只是测试是否相等,请使用
CompareStr
运算符-更易于阅读。当需要它提供的其他功能时,请使用。