一、NSRange结构

1.这个结构体,是Foundation框架定义的1个结构

这个结构体一般是来干嘛的

这个结构体的变量一般是来表示什么数据

看它的定义

typedef struct _NSRange {

NSUInteger location;

//代表子串在主串中出现的下标

NSUInteger length;

//代表子串在主串中匹配长度

} NSRange;

它有几个属性啊,是不是两个属性

一个location一个length

我现在定义一个结构变量,我是不是可以这么定义啊:

NSRange range ;

那这个结构变量一般用来表示什么样的数据

一般用来表示字符串在主字符串中的范围

表示一段范围

这个结构变量,一般情况下用来表示1段范围

例如,现在教室里坐着有同学

每个同学座位

我现在要你声明1个变量保存这段儿范围

一个同学、二个同学、三个同学、四个同学,这段儿范围

声明一个变量,把这段儿范围保存起来

怎么保存

这四个人在教室里是不是有一段范围啊,这个范围是什么

从几开始,下标,是不是从0开始

有几个长度,4个

所以表示一个范围的话,要用几个数据去表示啊,两个

一个是这段儿范围开始的下标一个是这段儿范围匹配长度

所以,这个结构体变量一般情况下用来表示1段范围,特别用在子串在主串中的范围表示

例如,@“hahajackhehe”,这个字符串中,@”jack“这个子串的在这个主串中的范围是

下标是几,4,匹配几个,匹配4个

4 4,就是@”jack“在这个字符串@”hahajackhehe”中的范围

如果我用个结构体来表示呢,用个什么结构体,是不是NSRange类型的结构体

NSRange range = {4,4};

range这个变量的值,就表示@”jack“在这个主串中的范围

location的值是4,位置以4开头,匹配几个长度,匹配4个长度

所以,以后啊,如果你想声明一个变量来表示一段儿范围,需不需要自己再去定义结构体了,不需要了,为什么,这个结构体是不是人家系统已经定义好了啊

2.这个NSRange结构体变量的创建

声明并初始化结构体变量的方式

假如现在我要声明1个NSRange的结构体变量,并且要初始化

1) 第一种方式:NSRange range

要加星吗,不要加星吧

然后初始化

range.location = 3;

range.length = 4;

我们最原始的方式,是不是这种方式

这种方式,我们可以创建一个NSRange类型的结构体变量,并且为它的属性赋值

2)第二种方式:NSRange range = {3 , 7};

这样它会按照顺序把3赋给第一个属性,把7赋给第二个属性

3)第三种方式:NSRange range = {.location = 3 , .length = 7 };

这样表示把3赋给这个结构体变量的location属性,把7赋给这个结构体变量的length属性

4)第四种方式:就是我们这个Foundation框架定义函数

这个函数呢,可以快速创建一个NSRange结构体变量返回

这个函数叫什么名字

NSMakeRange ( NSUInteger loc , NSUInteger len )

例如,我给它传个3,再传个7

NSMakeRange( 3 , 7 );

这个时候,它就返回一个什么呢,返回1个NSRange的结构体

NSRange range = NSMakeRange(3,7);

这个结构体的属性,就是什么啊,3,7

这个函数叫做NSMakeRange(loc,len);

返回1个指定属性的NSRange结构体变量

所以以后啊,如果你想要创建一个NSRange结构体变量的话,我建议你用这个NSMakeRange(loc,len)函数就可以

5)这个NSRange结构体变量是不是有两个属性啊,一个location属性,一个length属性

我想把它的值打印出来,我怎么打印

是不是NSLog(@“%lu”,range);

这么写肯定是不可以的,这是个结构体,里面两个属性,是不是啊,所以只能这么写:

NSLog(@“range.location = %lu range.length = %lu”,range.location,range.length);

输出:range.location = 3 range.length = 7

但是有一个问题,你觉不觉得这个好麻烦啊

我要去打印这个结构体变量的属性的值,这么打印是不是好麻烦啊

所以,Foundation框架中又定义了一个函数

可以将一个NSRange结构体变量转换为NSString字符串

这个函数叫什么名字呢,叫做NSStringFromRange

这个函数的签名如下

NSString * _Nonnull NSStringFromRange(NSRange range)

给它传一个NSRange变量,它就可以把这个range变量转换成字符串格式啊,我们打出来看一下

NSLog(@“%@”, NSStringFromRange(range));

输出:{3,7}

所以,如果你想打印NSRange结构体变量的话,就可以用这种方式

NSStringFromRange函数,可以将NSRange结构体变量转换为指定格式字符串

原文地址:https://blog.csdn.net/madoca/article/details/127416779

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25546.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注