Objective-C中判斷字符串是否包含其餘字符串html
-(BOOL) hasPrefix:(NSString *) astring;檢查字符串是否以astring開頭;
-(BOOL) hasSuffix:(NSString *) astring;檢查字符串是否以astring結尾;
使用方式:
NSString *filename=@"hello,world";
if([filename hasPrefix:@"hello"]){
...
}
if([filename hasSuffix:@"world"]){
...
}
若是想知道字符串內的某處是否包含其餘的字符串,使用rangeOfString:
-(NSRange) rangeOfString:(NSString *) astring;
將rangeOfString:發送給一個NSString對象時,傳遞的參數時要查找的字符串。它會返回一個NSRange struct來告訴你一個與這個字符串相匹配的部分從哪裏開始以及匹配上的字符個數。
NSRange range=[filename rangeOfString:@"o,world"];
if(range.location!=NSNotFound){
return true;
}else{
return false;
}ios
NSRange的用法【轉】數組
NSRange的定義
typedef struct _NSRange
{
unsigned int location;
unsigned int length;
}NSRange;
NSMakeRange函數
--這個函數比較特殊 返回一個NSRange的對象。
NSMakeRanger(unsigned int location,unsigned int length);
例如:
NSRange range = NSMakeRanger(0,5);函數
NSLog(@"location is %d,length is %d",range.location,range.length);spa
數據截取實例:orm
unsigned char aBuffer[1024];
NSRange range= NSMakeRange(start point,length);htm
[myData getBytes:aBuffer range:range]; //把range範圍的字符串放入aBuffer中對象
NSData *Data=[NSData dataWithBytes:aBuffer length]; //再把aBuffer放入NSData中blog
2011-08-12 19:34:09| 分類: ios | 標籤:nsrange 用法 |字號大中小 訂閱homebrew
摘自:http://hi.baidu.com/ferrari_yang/blog/item/811e92c299396e0a0ef477a7.html
NSRange的定義
typedef struct _NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
NSRange是一個結構體,其中location是一個以0爲開始的index,length是表示對象的長度。他們都是NSUInteger類型。 而NSUInteger類型的定義以下:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef unsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
例子:
下面這個例子,將輸出IPA
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Starting at position 25, get 3 characters
NSRange range = NSMakeRange (25, 3);
// This would also work:
// NSRange range = {25, 3};
NSLog (@"Beer shortname: %@", [homebrew substringWithRange:range]);
搜索字符串:
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
NSRange range = [homebrew rangeOfString:@"IPA"];
// Did we find the string "IPA" ?
if (range.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序將輸出Range is: {25, 3}。NSStringFromRange()方法,將一個NSRange返回一個NSString。而另一個函數NSRangeFromString()則是將NSString轉換爲NSRange
下面這個例子將從後向前反向搜索字符串:
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
// Search for the "ia" starting at the end of string
NSRange range = [homebrew rangeOfString:@"ia" options:NSBackwardsSearch];
// What did we find
if (range.length > 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序將輸出:Range is: {12, 2}
ac
若是你要獲取一個字符串或者一個數組中的一個子集,那麼使用NSRange會很方便的定義這個子集。
NSRange定義
Declaration: typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
建立NSRange的方法定義
Declaration: NSRange NSMakeRange (
NSUInteger loc,
NSUInteger len
);
例如獲取一個數組的一個子集:
NSRange range = NSMakeRange(0, 5);
NSArray *subArray = [self.states subarrayWithRange:range];
這樣就得到了這個數組中0開始的5個元素的子集。
當談到NSString方法時,你會發現許多都涉及到NSRange。沒必要擔憂,它其實只不過是一種C語言結構用來幫助描述一系列的條款,包括一個起點位置和一個計數方法。例如,一個行列經過從另外一個字符串中摘取一個子字符串的方法是頗有效的。你能夠對其指定起始位置以及所需的元素數量(下面會向你具體闡述)。
NSRange 定義
關於NSRange的結構,定義以下:
typedef struct_NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
location是在行列中的起始位置(基於零點)而length是行列中的條目個數。NSUInteger只是單純的一個無符號的值,它支持32位和64位系統。下面是有關它的定義:
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE ||TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef unsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
NSRange和字符串
這個示例告訴了你一個建立行列的方法,經過使用相同的字符串來摘錄一個子字符串——輸出結果爲IPA
NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";
//起始位置爲25,獲取3個特徵值
NSRange range =NSMakeRange (25,3);
//這種方法一樣有效
// NSRange行列爲{25, 3}
NSLog (@"Beershortname: %@", [homebrewsubstringWithRange:range]);
若是你想要搜尋一個子字符串,你能夠經過下列代碼:
NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";
NSRange range = [homebrew rangeOfString:@"IPA"];
// Did we find the string "IPA" ? 咱們找到字符串"IPA"了麼?
if (range.length> 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
輸出結果將顯示爲:Range is: {25, 3}。其中有一點很重要,就是指令NSStringFromRange()將顯示傳回(一個行列)的值做爲一個NSString。一樣你還能夠經過建立一個字符串的行列獲得一個NSRangeFromString()功能。
讓咱們再看另外一個示例,下述代碼將從字符串的末尾開始向前搜索「ia」字符串:
NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";
//從末尾開始搜索"ia"字符串
NSRange range = [homebrew rangeOfString:@"ia"options:NSBackwardsSearch];
//判別查找到的字符串是否正確
if (range.length> 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上述結果將顯示爲:Range is: {12, 2}(「ia」出如今單詞「India」中)
NSRange功能如下就是在處理行列時,可能須要的一些功能:NSEqualRanges()NSIntersectionRange()NSLocationInRange()NSMakeRange()NSMaxRange()NSRangeFromString()NSStringFromRange()NSUnionRange()