国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

NSRange

2019-11-14 19:45:33
字體:
供稿:網(wǎng)友

來自網(wǎng)絡(luò),為自己好記保存下,希望對(duì)你也有用!

 

NSRange的定義

typedef struct _NSRange

{

  NSUInteger location;

  NSUInteger length;

} NSRange;

 

NSRange是一個(gè)結(jié)構(gòu)體,其中l(wèi)ocation是一個(gè)以0為開始的index,length是表示對(duì)象的長(zhǎng)度。他們都是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

例子:

下面這個(gè)例子,將輸出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));

 

上面的程序?qū)⑤敵鯮ange is: {25, 3}。NSStringFromRange()方法,將一個(gè)NSRange返回一個(gè)NSString。而另外一個(gè)函數(shù)NSRangeFromString()則是將NSString轉(zhuǎn)換為NSRange

下面這個(gè)例子將從后向前反向搜索字符串:

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));

上面的程序?qū)⑤敵觯篟ange is: {12, 2}

ac

如果你要獲取一個(gè)字符串或者一個(gè)數(shù)組中的一個(gè)子集,那么使用NSRange會(huì)很方便的定義這個(gè)子集。

NSRange定義

Declaration: typedef struct _NSRange {

   NSUInteger location;

   NSUInteger length;

} NSRange;

創(chuàng)建NSRange的方法定義

Declaration: NSRange NSMakeRange (

     NSUInteger loc,

     NSUInteger len

  );

例如獲取一個(gè)數(shù)組的一個(gè)子集:

        NSRange range = NSMakeRange(0, 5); 

        NSArray *subArray = [self.states subarrayWithRange:range];

這樣就獲得了這個(gè)數(shù)組中0開始的5個(gè)元素的子集。

當(dāng)談到NSString方法時(shí),你會(huì)發(fā)現(xiàn)許多都涉及到NSRange。不必?fù)?dān)心,它其實(shí)只不過是一種C語言結(jié)構(gòu)用來幫助描述一系列的條款,包括一個(gè)起點(diǎn)位置和一個(gè)計(jì)數(shù)方法。例如,一個(gè)行列通過從另一個(gè)字符串中摘取一個(gè)子字符串的方法是很有效的。你可以對(duì)其指定起始位置以及所需的元素?cái)?shù)量(下面會(huì)向你具體闡述)。

NSRange 定義
關(guān)于NSRange的結(jié)構(gòu),定義如下:
typedef struct_NSRange
{
NSUInteger location;
NSUInteger length;
} NSRange;
location是在行列中的起始位置(基于零點(diǎn))而length是行列中的條目個(gè)數(shù)。NSUInteger只是單純的一個(gè)無符號(hào)的值,它支持32位和64位系統(tǒng)。下面是有關(guān)它的定義:
#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和字符串
這個(gè)示例告訴了你一個(gè)創(chuàng)建行列的方法,通過使用相同的字符串來摘錄一個(gè)子字符串——輸出結(jié)果為IPA
NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";
//起始位置為25,獲取3個(gè)特征值
NSRange range =NSMakeRange (25,3);
//這種方法同樣有效
// NSRange行列為{25, 3}
NSLog (@"Beershortname: %@", [homebrewsubstringWithRange:range]);
如果你想要搜尋一個(gè)子字符串,你可以通過下列代碼:
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));
輸出結(jié)果將顯示為:Range is: {25, 3}。其中有一點(diǎn)很重要,就是指令NSStringFromRange()將顯示傳回(一個(gè)行列)的值作為一個(gè)NSString。同樣你還可以通過創(chuàng)建一個(gè)字符串的行列得到一個(gè)NSRangeFromString()功能。
讓我們?cè)倏戳硪粋€(gè)示例,下述代碼將從字符串的末尾開始向前搜索“ia”字符串:
NSString *homebrew= @"ImperialIndia Pale Ale (IPA)";
//從末尾開始搜索"ia"字符串
NSRange range = [homebrew rangeOfString:@"ia"options:NSBackwardsSearch];
//判別查找到的字符串是否正確
if (range.length> 0)
NSLog(@"Range is: %@", NSStringFromRange(range));
上述結(jié)果將顯示為:Range is: {12, 2}(“ia”出現(xiàn)在單詞“India”中)

NSRange功能
以下就是在處理行列時(shí),可能需要的一些功能:
NSEqualRanges()
NSIntersectionRange()
NSLocationInRange()
NSMakeRange()
NSMaxRange()
NSRangeFromString()
NSStringFromRange()
NSUnionRange()


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 军事| 罗山县| 缙云县| 泸水县| 嵩明县| 巩留县| 沙河市| 玛纳斯县| 浪卡子县| 思茅市| 云林县| 朔州市| 西充县| 兴宁市| 余庆县| 正阳县| 融水| 九龙城区| 城固县| 广饶县| 客服| 驻马店市| 广河县| 资中县| 平利县| 平阳县| 陆河县| 星子县| 洞口县| 武威市| 铜陵市| 石城县| 宁蒗| 项城市| 高碑店市| 孝昌县| 商河县| 丽水市| 许昌市| 东光县| 城固县|