一、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进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。