iOS-NSRange使用

本文详细解析了NSRange结构体的使用方法,包括如何通过不同方式创建NSRange,以及如何利用NSRange进行字符串的截取与查找。文章强调了在操作过程中需要注意的边界问题,如避免越界导致的程序崩溃,并介绍了字符串查找时返回结果的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSRange本身是个结构体,里面有两个属性location(起始位置)和length(长度),如下

NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
    NSRange r;
    r.location = loc;
    r.length = len;
    return r;
}

我们应用NSRange最多的地方就是字符串的截取与查找,例如:

    NSString *str = @"Let's learn NSRange";
    //创建方式一
    NSRange range1 = {2,4};
    //创建方式二
    NSRange range2 = NSMakeRange(2, 5);
    //截取字符串
    NSLog(@"%@", [str substringWithRange:range1]);
    NSLog(@"%@", [str substringWithRange:range2]);
    //查找字符串
    NSRange range3 = [str rangeOfString: @"le"];
    NSLog(@"range:%@", NSStringFromRange(range3));
    NSRange range4 = [str rangeOfString:@"go"];
    NSLog(@"range:%@", NSStringFromRange(range4));

注意:1.当你进行字符串截取时,要注意字符串的长度,防止起始位置超过字符串长度或截取的长度超过字符串长度而导致越界闪退,这里苹果没有帮我们处理,需要我们自己判断。
2.在字符串查找时匹配的始终是第一个相符的字符串,然后返回第一个NSRange。如果没有匹配到相符的字符串,这里苹果帮我们处理了,返回的是{9223372036854775807, 0},显然length为0,前面一大串数字不需要管,它表示int64的最大值。
3.当你使用查找字符串方法时,返回的始终是匹配到的第一个,但是如果原字符串里面有多个的相符的,而且你都想匹配出来,这个方法是做不到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值