为什么这个比较结果NO
?
BOOL areTheSame = NSOrderedSame == [@"th" compare:@"They" options:NSCaseInsensitiveSearch range:NSMakeRange(0, 2)];
当我对其进行测试时@"th"
,@"Th"
它是YES
.
我在这里想念什么?
为什么这个比较结果NO
?
BOOL areTheSame = NSOrderedSame == [@"th" compare:@"They" options:NSCaseInsensitiveSearch range:NSMakeRange(0, 2)];
当我对其进行测试时@"th"
,@"Th"
它是YES
.
我在这里想念什么?
这是违反直觉的,但该range
论点仅适用于接收者。另一个字符串的长度( 的参数compare:
)不受范围限制。您的调用减少@"th"
到产生的范围 {0,2} @"th"
(即,这没有效果),然后将其与@"They"
.
你会看到:
NSComparisonResult comp = [@"They" compare:@"th"
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, 2)];
BOOL areTheSame = comp == NSOrderedSame;
产生您期望的结果,因为它将接收器 ( @"They"
) 向下 ( 到@"Th"
) 然后进行比较。