【发布时间】:2011-10-17 19:58:30
【问题描述】:
我在比较 NSString 时遇到问题。 localizedCaseInsensitiveCompare: 或 compare: 中的任何其他 NSString 方法使用扩展的 ascii 字符集向我返回错误的结果。例如下面的代码,经过比较,noString 应该在enString1 之后。
任何想法,我该如何解决这个问题?
NSString * noString = @"ÅåÆæØøab"; // ASCII values, 197, 229, 198, 230, 216, 248, 97, 98
NSString * enString1 = @"fbcd";
NSString * enString2 = @"bbcd";
NSString * enString3 = @"zbcd";
NSLog(@"%i", [enString1 localizedCaseInsensitiveCompare:enString2]); // 1
NSLog(@"%i", [enString1 localizedStandardCompare:noString]); // 1, should be -1
NSLog(@"%i", [enString1 localizedCaseInsensitiveCompare:noString]); // 1, should be -1
"aa" compareTo "aå" 返回升序。这是正确的。但是,
"aa" compareTo "aæ" 返回降序,为什么? “aø”也一样。
【问题讨论】:
标签: iphone unicode nsstring compare latin1