gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:14:31 25 4
gpt4 key购买 nike

我正在尝试使用 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。 UTF8CompareLocale 在 AnsiSameText 内部用于区域设置,这些设置用于不区分大小写的比较。但如果 OSX 的语言设置为荷兰语,则 OSX Yosemite 会认为“I”和“i”不同。

在荷兰系统上调用 SetUTF8CompareLocale('en_US'); 可以修复该问题,而无需修补 Delphi 单元。

关于macos - 如何在 OSX Yosemite 上以不区分大小写的方式比较文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26970744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com