NSString 字符串中提取目标字段 & 截取的三种方法

NSString字符串截取的三种方法

1.定义一个字符串a, 截取a 的某一个项目组,复制给b, b必须是int型

  NSString *a = @"1.2.30";
  int  b= [[a substringWithRange:NSMakeRange(4,2)] intValue]; 
  NSLog(@"a:%@  \n",a  );
  NSLog(@"b:%d",b  );

2. 字符串截取到第n位  (substringToIndex: n)(第n 位不算再内)

- (void)viewDidLoad
{
    NSString  *a = @"i like long dress";
    NSString *b = [a substringToIndex:4];
    NSLog(@"\n b: %@",b);
}


3.字符串从第n 位开端截取,直到最后 (substringFromIndex:n)(包含第 n 位)

- (void)viewDidLoad
{
    NSString  *a = @"i like long dress";
    NSString *b = [a substringFromIndex:4];
    NSLog(@"\n b: %@",b);
}

NSString字符串中提取所需要的目标字段

需要从字符串中提取自己所需要的字符串,例如,从“小张想考北京的公务员”字符串中提取地点-“北京”和工作“公务员”两个字段。经实践测试完成了这个小任务。

其中用到了IOS中的正则表达式、NSString、NSArray等相关知识,采用了关键字分割和索引位置截取两种方法。

//字符串声明,希望提取其中的地点-“北京”和工作“公务员”两个字段  
        NSString *urlString = @"<span style="font-size:18px;">小张想考北京的公务员</span>";  
        NSError *error;  
        //创建正则表达式  
        NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:@"做[\\S]*的[\\S]*"options:0error:&error];  
        if (regex != nil) {  
            //检查正则表达式是否与字符串匹配  
            NSTextCheckingResult *firstMatch = [regex firstMatchInString:urlString options:0range:NSMakeRange(0, [urlString length])];  
              
            if (firstMatch) {  
                //NSRange是结构体,表示相关事物的范围。location-起始位置,leng-长度  
                NSRange resultRange = [firstMatch rangeAtIndex:0];  
                //NSLog(@"%@",resultRange.length);  
NSString *result = [urlString substringWithRange:resultRange];  
                NSLog(@"1.正则匹配后提取的字符串>>:%@",result);  
                NSMutableString *mresult = [NSMutableString stringWithCapacity:40];  
                 //将正则提取后的字符串变为可变字符串  
                [mresult appendString:result];  
                NSLog(@"2.将字符串变为可变字符串NSMutableString>>:%@",result);  
                NSRange prepRange = [mresult rangeOfString:@"做"];  
                [mresult deleteCharactersInRange:prepRange];  
                NSLog(@"3.去掉动词后的NSMutableString>>:%@",mresult);  
                //字符串切分成数组  
                NSArray *chunks = [mresult componentsSeparatedByString:@"的"];  
                NSLog(@"字符串数组的长度是%ld",chunks.count);  
                for (NSInteger i =0; i < [chunks count]; i++) {  
                    NSLog(@"4.%ld.去掉介词后分割的chunks[%ld] is %@",i+1,i,chunks[i]);  
                }  
                NSLog(@"chunks[0]是:%@",chunks[0]);  
                NSLog(@"chunks[1]是:%@",chunks[1]);  
                  
                  
                //<span style="font-family: Arial, Helvetica, sans-serif;">*****方法二、</span><span style="font-family: Arial, Helvetica, sans-serif;">利用索引位置截取字符串</span>  
                /*  
                NSString *subString = @"的";  
                //1.检索“的”的位置和长度  
                NSRange rangePrep = [result rangeOfString:subString];  
                NSLog(@"%@位置为:%lu",subString,rangePrep.location);  
                //2.1获取“做”与“的”之间的字符串位置、长度  
                NSRange areaRange = NSMakeRange(1,(rangePrep.location-1));  
                //2.2获取“的”之后的字符串位置、长度  
                NSRange sortRange = NSMakeRange((rangePrep.location+1), (result.length-rangePrep.location-1));  
                //3.1根据areaRange对字符串;进行截取  
                NSString *subArea = [result substringWithRange:areaRange];  
                //3.2根据sortRange对字符串;进行截取  
                NSString *subSort = [result substringWithRange:sortRange];  
                NSLog(@"area:%@",subArea);  
                NSLog(@"sort:%@",subSort);  
                */  
            }  
        }  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值