2012-12-17 35 views
3

我試圖找出具體如何匹配字符串的第一個n字符與另一個字符串。下面是一些代碼,我在此刻得到了:來自CFStringCompareWithOptions的奇怪行爲

CFStringRef myStringRef = CFSTR("hello"); 
CFStringRef otherStringRef = CFSTR("helloworld"); 

CFIndex cmpChars = CFStringGetLength(myStringRef); 

CFComparisonResult res = CFStringCompareWithOptions(myStringRef, otherStringRef, CFRangeMake(0, cmpChars), kCFCompareCaseInsensitive); 

printf("Res: %i\n", (int)res); 

我得到儘可能-1res值,這意味着「小於」根據文檔。當然,因爲我指定範圍匹配它應該只考慮這個範圍?

回答

4

文檔可能更清晰,但範圍僅適用於第一個字符串,而不是第二個字符串。 Here's a link to an old mailing list message.你從存檔中不能說出什麼,但我從我的個人檔案中知道,那個說這樣的人是蘋果工程師。

要做你想做的事,你可能也需要使用CFStringCreateWithSubstring

+0

如果有人想知道,NSString的'compare:options:range:'也是如此。 https://gist.github.com/4325317 –