美文网首页
iOS - NSRange与字符串截取、匹配和分隔

iOS - NSRange与字符串截取、匹配和分隔

作者: ShIwEn9 | 来源:发表于2019-03-26 16:45 被阅读0次

一、NSRange

1、NSRange的介绍

NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
    typedef struct _NSRange {
        NSUInteger location;
        NSUInteger length;
    } NSRange;
    NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
    NSRange有2个成员
    NSUInteger location : 表示该范围的起始位置
    NSUInteger length : 表示该范围内的长度

2、NSRange的创建

1), NSRange range;
    //通过结构体变量访问成员
    range.location = 3;
    range.length = 2;
2),//结构体变量整体赋值
    range = (NSRange){5,3};
    NSRange r2 = {4,5};  //最简单的
3),
    NSRange r3 = {.location = 3,.length = 5};
4),OC中新增的(OC中建议使用这种)
    //NSMakeRange函数的作用给 NSRange结构体变量赋值
    NSRange r4 = NSMakeRange(3, 3);
    NSString *str = NSStringFromRange(r4);//将一个结构体转化成字符串

二、字符串的截取和替换
1,从指定位置from开始(包含起始位置)到尾部

- (NSString *)substringFromIndex:(NSUInteger)from;

2,从字符串的开头一直截取到指定的位置to,' 不包含结束位置 '

- (NSString *)substringToIndex:(NSUInteger)to;

3,按照所给出的NSRange从字符串中截取子串

- (NSString *)substringWithRange:(NSRange)range;

4,字符串截取练习

练习一:获取itcast标签中的内容
 NSString *str = @"<hello>tangFeng</hello>";
//  @">"  loc+1
NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"t"得位置
//  @"</" loc
NSUInteger len = [str rangeOfString:@"</"].location - loc;  //要截取的字符的长度
// 构建 ruange
 NSRange r2 = NSMakeRange(loc, len);
// 截取
NSString *subStr = [str substringWithRange:r2];
        
练习二:抽取指定范围的字符串      
NSString *string1 = @"0123456789";
NSRange range1 = NSMakeRange(0, 4);//NSMakeRange这个函数的作用是从第0位开始计算,长度为4
NSLog(@"从第0个字符开始,长度为4的字符串是:%@",[string1 substringWithRange:range1]);
NSLog(@"抽取从头开始到第4个字符:%@",[string1 substringToIndex:4]);
NSLog(@"抽取从第6个字符开始到末尾:%@",[string1 substringFromIndex:6]);

5.字符串的匹配:

根据一个NSString匹配得到的下表

例:NSString*string =@”sdfsfsfsAdfsdf”;
NSRangerange = [stringrangeOfString:@”f”];

6.分隔字符串

NSString*string =@”sdfsfsfsAdfsdf”;
//从字符A中分隔成2个元素的数组
NSArray *array = [string componentsSeparatedByString:@”A”]; 
NSLog(@”array:%@”,array); 
//结果是adfsfsfs和dfsdf

相关文章

网友评论

      本文标题:iOS - NSRange与字符串截取、匹配和分隔

      本文链接:https://www.haomeiwen.com/subject/ffbhvqtx.html