Странное поведение от CFStringCompareWithOptions
Я пытаюсь точно выяснить, как я могу сопоставить первые n
символы строки с другими. Вот какой код у меня есть на данный момент:
CFStringRef myStringRef = CFSTR("hello");
CFStringRef otherStringRef = CFSTR("helloworld");
CFIndex cmpChars = CFStringGetLength(myStringRef);
CFComparisonResult res = CFStringCompareWithOptions(myStringRef, otherStringRef, CFRangeMake(0, cmpChars), kCFCompareCaseInsensitive);
printf("Res: %in", (int)res);
Я получаю значение res
как -1
, Что означает "меньше, чем" в соответствии с документацией. Хотя, конечно, поскольку я указал диапазон, чтобы он соответствовал, он должен учитывать только этот диапазон?
1 ответ:
Документация могла бы быть понятнее, но диапазон применяется только к первой строке, а не ко второй. Вот ссылка на старое сообщение из списка рассылки.Чего вы не можете сказать из архива, но я знаю из своего личного архива, что парень, который сказал это, был инженером Apple.
Чтобы сделать то, что вы хотите, вам может понадобиться использовать
CFStringCreateWithSubstring
тоже.