宣告:-(NSComparisonResult)compare:(NSString *)string1 option:(NSStringCompareOptions)mask range:(NSRange)range
名稱:用compare對字串中的字元進行逐一比較
說明:NSComparisonResult傳回的類型(註一),option為一個遮罩參數(註二),range表示要比較的範圍(註三)
<以下範例>
NSString *string1 = @"this blog is n11 studio"; NSString *string2 = @"n11 studio"; NSRange myRange; myRange.location = 13; myRange.length = 10; NSComparisonResult result = [string1 compare:string2 options:NSCaseInsensitiveSearch range:myRange]; if(result == NSOrderedSame) { NSLog(@"it is the same"); }
註一:回傳的類型有三種,官方文件如下。如果出現第一個字元不相同時,若string1的該位置字元比string2的該字元於字母表中更前面時,則回傳NSOrderedAscending。如"a compare:b"
enum _NSComparisonResult {NSOrderedAscending = -1, NSOrderedSame, NSOrderedDescending}; typedef NSInteger NSComparisonResult; #if NS_BLOCKS_AVAILABLE typedef NSComparisonResult (^NSComparator)(id obj1, id obj2); #endif
註二:以下為官方文件,內容說明很多種搜尋方法,NSCaseInsensitiveSearch:比較時不區分大小寫
/* These options apply to the various search/find and comparison methods (except where noted). */ enum { NSCaseInsensitiveSearch = 1, NSLiteralSearch = 2, /* Exact character-by-character equivalence */ NSBackwardsSearch = 4, /* Search from end of source string */ NSAnchoredSearch = 8, /* Search is limited to start (or end, if NSBackwardsSearch) of source string */ NSNumericSearch = 64 /* Added in 10.2; Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt; only applies to compare methods, not find */ #if MAC_OS_X_VERSION_10_5 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_2_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED , NSDiacriticInsensitiveSearch = 128, /* If specified, ignores diacritics (o-umlaut == o) */ NSWidthInsensitiveSearch = 256, /* If specified, ignores width differences ('a' == UFF41) */ NSForcedOrderingSearch = 512 /* If specified, comparisons are forced to return either NSOrderedAscending or NSOrderedDescending if the strings are equivalent but not strictly equal, for stability when sorting (e.g. "aaa" > "AAA" with NSCaseInsensitiveSearch specified) */ #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 */ #if MAC_OS_X_VERSION_10_7 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED , NSRegularExpressionSearch = 1024 /* Applies to rangeOfString:..., stringByReplacingOccurrencesOfString:..., and replaceOccurrencesOfString:... methods only; the search string is treated as an ICU-compatible regular expression; if set, no other options can apply except NSCaseInsensitiveSearch and NSAnchoredSearch */ #endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 || __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED */ }; typedef NSUInteger NSStringCompareOptions;
註三: 用於表示要比較的範圍,記住不能超過接收訊息物件的界限
typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange;
沒有留言:
張貼留言