作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从名字上看,人们会相信 SysUtils (Delphi XE) 中定义的 AnsiSameText 将接收 ANSI 字符串作为参数,但该函数的定义如下:
function AnsiSameText(const S1, S2: string): Boolean
我在这里缺少什么?
AnsiStrings 单元中有一个 ANSI 函数,但为什么这个函数(在 Sysutils 中)被称为“ansi”?
最佳答案
在旧版本的 Delphi(Unicode 之前)中,有两组字符串比较函数:
SameText
、CompareText
等。这些执行的比较忽略区域设置。AnsiSameText
、AnsiCompareText
等。这些执行的比较考虑了区域设置。引入 Unicode 后,这些对字符串
进行操作的函数现在对 UTF-16 数据进行操作。为了向后兼容,它们保留相同的名称,并以相同的方式运行。也就是说,SameText
不考虑区域设置,但 AnsiSameText
会考虑。
因此,虽然名称具有误导性,但 Ansi
前缀只是表明该函数具有区域设置感知能力。无论如何,在我看来,即使在 Unicode 之前的 Delphi 中,Ansi
前缀也很差。
区域设置很重要的原因是不同的区域设置对于字母排序有不同的规则。
关于delphi - 为什么 AnsiSameText 不是 ANSI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23444579/
从名字上看,人们会相信 SysUtils (Delphi XE) 中定义的 AnsiSameText 将接收 ANSI 字符串作为参数,但该函数的定义如下: function AnsiSameText
我是一名优秀的程序员,十分优秀!