`

NSRange 的用法

 
阅读更多

NSRange的定义

typedef struct _NSRange

{

  NSUInteger location;

  NSUInteger length;

} NSRange;

 

NSRange是一个结构体,其中location是一个以0为开始的indexlength是表示对象的长度。他们都是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 (253);

// 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: {253}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: {122}

ac

如果你要获取一个字符串或者一个数组中的一个子集,那么使用NSRange会很方便的定义这个子集。

NSRange定义

Declaration: typedef struct _NSRange {

   NSUInteger location;

   NSUInteger length;

} NSRange;

创建NSRange的方法定义

Declaration: NSRange NSMakeRange (

     NSUInteger loc,

     NSUInteger len

  );

例如获取一个数组的一个子集:

        NSRange range = NSMakeRange(05); 

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

这样就获得了这个数组中0开始的5个元素的子集。

分享到:
评论

相关推荐

    Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析

    本文以实例详细描述了Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect的定义及用法,具体如下所示: 1、NSRange: NSRange的原型为 typedef struct _NSRange { NSUInteger location; NSUInteger ...

    Objective-C中NSString的各种用法

    2. 使用 alloc 和 initWithString 方法创建字符串:`NSString *str2 = [[NSString alloc] initWithString:@"adf"];` 3. 使用 stringWithFormat 方法创建字符串:`NSString *str3 = [NSString stringWithFormat:@...

    ios-AttributedString 富文本简单实用.zip

    在链接文章《iOS开发:AttributedString详解》中,作者详细介绍了AttributedString的使用方法,包括如何处理链接、图片、自定义视图等高级用法。这篇文章可以帮助开发者掌握更多关于AttributedString的实战技巧,...

    UILable 用法

    本篇文章将深入探讨`UILabel`的使用方法,包括改变字体颜色、大小、实现文字高亮、自动适应大小、截去中间文字以及设置行数等核心知识点。 一、改变字体颜色与大小 在`UILabel`中,我们可以通过设置`textColor`属性...

    iOS富文本的使用方法示例详解

    在iOS开发中,富文本(Rich Text)是一种允许在单一文本字符串中包含不同样式和格式的方法,如改变字体、颜色、下划线等。富文本的使用通常涉及到`NSAttributedString`和`NSMutableAttributedString`类,它们是iOS...

    NSAttributedString 的小例子

    首先,创建NSAttributedString的基本步骤是创建一个NSMutableAttributedString实例,然后使用append方法添加字符串。每添加一个字符串,我们都可以设置其特定的属性,如字体(UIFont)、颜色(UIColor)和字号。例如...

    Objective_C Foundtion Kit 快速教程

    2. **获取字符串长度**: 使用`length`方法,例如`[str length]`将返回字符串的字符数。 3. **字符串比较**: `isEqualToString:`方法用于比较两个字符串内容是否相同,而`compare:`方法则进行更复杂的比较,返回`...

    UILabel内容中某个文字添加点击事件

    使用这个扩展非常简单,只需要给UILabel对象调用`addTextTapActionForRanges:handler:`方法,传入需要响应点击的NSRange数组和处理点击的block即可: ```objc NSArray *ranges = @[[NSValue valueWithRange:...

    UILabel改变任意位置字体大小颜色

    `setTextColor:forRange:`方法可能会使用`NSMutableAttributedString`来构建一个新的属性字符串,然后将其设置为`UILabel`的`attributedText`。`setTextFontSize:forRange:`方法也会类似,通过修改`...

    iOS Label的自适应高度和字间距行距

    然后,我们可以使用`sizeThatFits`或`intrinsicContentSize`方法来计算出适应文本内容的合适尺寸。例如: ```swift let label = UILabel() label.numberOfLines = 0 label.lineBreakMode = .byWordWrapping label....

    ios基础教程之常见的数组使用方法

    本教程将深入探讨iOS中常见的数组使用方法,包括不可变数组(NSArray)和可变数组(NSMutableArray)。这些方法对于理解并有效地操作数组至关重要。 一、数组的简单介绍 数组在Objective-C(OC)中是一个对象,它...

    UiOS开发中ITextView回收或关闭键盘使用方法总结

    在iOS开发中,当涉及到用户输入时,我们经常会用到`UITextView`和`UITextField`。然而,两者在处理键盘显示...例如,可能同时使用方法一和方法二,以确保用户可以通过点击导航栏的Done按钮或直接按下回车键来关闭键盘。

    Foundation_DataTypes

    例如,在NSArray的sortedArrayUsingComparator:方法中使用NSComparator来进行排序。这个函数块接受两个id类型的参数,并返回一个NSComparisonResult枚举值,可能是NSOrderedAscending(升序)、NSOrderedDescending...

    swift-UITextFieldUITextView限制输入

    具体使用方法需要查看项目文档,一般会包括创建自定义过滤规则,然后将其应用到`UITextField`或`UITextView`的输入代理方法中。 ```swift // 假设LFYTextInputFilter有一个类LFYTextInputFilter,用于创建过滤器 ...

    实现iPhone电子书的分页显示功能的代码借鉴.pdf

    1. 首先,在`viewDidLoad`方法中初始化必要的变量,如总页数(totalPages),当前页数(currentPage),以及用于显示的UILabel(textLabel)。 ```objc - (void)viewDidLoad { [super viewDidLoad]; totalPages =...

    ios-富文本.zip

    在iOS中,我们可以使用`NSAttributedString`类和它的子类`NSMutableAttributedString`来创建和操作富文本。 标题"ios-富文本.zip"暗示了这个压缩包可能包含了关于如何在iOS应用中实现富文本样式的示例代码。描述中...

    iOS正则表达式工具

    在iOS开发中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能通过预定义的模式...熟练掌握正则表达式及其使用方法,将极大地提升你的iOS开发能力。同时,利用好相关的工具,可以使开发过程更为高效。

    swift-YBAttributeString用Masonry的语法写NSAttributedString

    首先,我们要理解`NSAttributedString`的基本用法。通常,我们通过创建一个`NSAttributedString`实例,并设置其属性字典,来定义文本的样式。例如: ```swift let attributedString = NSMutableAttributedString...

    iOS 富文本

    在iOS开发中,富文本(Rich Text)是一种能够包含多种格式和样式...以上是关于iOS富文本的基本概念、使用方法以及一些实践中的注意事项。通过熟练掌握这些知识点,开发者可以创建出功能丰富的文本界面,提升用户体验。

Global site tag (gtag.js) - Google Analytics