gpt4 book ai didi

macos - OSX Yosemite 上的荷兰语区域设置导致 "i"和 "I"不区分大小写的比较失败

转载 作者:行者123 更新时间:2023-12-03 17:11:11 26 4
gpt4 key购买 nike

我正在尝试使用荷兰语区域设置在 OSX Yosemite 上对“i”和“I”进行不区分大小写的比较。但 OSX 一直告诉我字符串不同。如果我将区域设置更改为“en_US”,则比较将按预期进行。

下面的xcode“命令行工具”项目可以用来演示该问题。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {

CFStringRef s1 = (__bridge CFStringRef)@"i";
CFStringRef s2 = (__bridge CFStringRef)@"I";

CFLocaleRef tmpLocale = CFLocaleCreate(nil, (__bridge CFStringRef)@"nl_NL"); // or // CFLocaleRef tmpLocale = CFLocaleCopyCurrent(); on a Dutch OSX

int result = CFStringCompareWithOptionsAndLocale(s1, s2, CFRangeMake(0, 1), kCFCompareCaseInsensitive, tmpLocale);

CFRelease(tmpLocale);

NSLog(@"%d", result);

if (result == 0) NSLog(@"same"); else NSLog(@"different");

}
return 0;
}

这是 OSX 中的错误还是我遗漏了什么?

最佳答案

Dutch 在排序(整理)和转换二合字母“ij”(大写/标题大写时变为“IJ”)时确实需要一些特殊的逻辑。对于荷兰语词典及其语言保存机构来说,这两个字母通常被视为单个字母(甚至是连字)。

您所遇到的确实闻起来像是 CoreFoundation 中的合法错误。经过进一步测试,任何以“i”开头的字符串都会导致 CFStringCompareWithOptionsAndLocale 返回 1 或 -1,而不是 0。

关于macos - OSX Yosemite 上的荷兰语区域设置导致 "i"和 "I"不区分大小写的比较失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26975322/

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