macos – 如何在OSX Yosemite上以不区分大小写的方式比较文本

macos – 如何在OSX Yosemite上以不区分大小写的方式比较文本,第1张

概述我正在尝试使用AnsiSameText以不区分大小写的方式比较OSX上的两个字符串.这曾经工作得很好,但是在OSX Yosemite上,如果OSX的“首选语言”设置为荷兰语(“系统偏好设置” – >“语言和地区” – >“首选语言” – >“荷兰荷兰人“). 在下面的代码示例中,我希望它只打印“相同”.但我得到“相同,不同,不同”. program Project2;{$APPTYPE CON 我正在尝试使用AnsiSameText以不区分大小写的方式比较OSX上的两个字符串.这曾经工作得很好,但是在OSX Yosemite上,如果OSX的“首选语言”设置为荷兰语(“系统偏好设置” – >“语言和地区” – >“首选语言” – >“荷兰荷兰人“).

在下面的代码示例中,我希望它只打印“相同”.但我得到“相同,不同,不同”.

program Project2;{$APPTYPE CONSolE}{$R *.res}uses  System.SysUtils;begin  if AnsiSameText('abcde','ABCDE') then // Same    WriteLn('Same')  else    WriteLn('Different');  if AnsiSameText('abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMnopQRSTUVWXYZ') then // different    WriteLn('Same')  else    WriteLn('Different');  if AnsiSameText('i','I') then // different    WriteLn('Same')  else    WriteLn('Different');end.

以不区分大小写的方式比较文本的正确方法是什么?

我正在使用Delphi XE7.

解决方法 Delphi使用CFLocalecopyCurrent返回的值初始化UTF8CompareLocale.在AnsiSameText中使用UTF8CompareLocale作为用于不区分大小写的比较的区域设置.但是,如果OSX的语言设置为荷兰语,OSX Yosemite认为“我”和“我”不同.

调用SetUTF8CompareLocale(‘en_US’);在荷兰语系统上修复问题而无需修补Delphi单元.

总结

以上是内存溢出为你收集整理的macos – 如何在OSX Yosemite上以不区分大小写的方式比较文本全部内容,希望文章能够帮你解决macos – 如何在OSX Yosemite上以不区分大小写的方式比较文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存