首页 > 学院 > 开发设计 > 正文

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

2019-11-08 00:36:52
字体:
来源:转载
供稿:网友

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);                  */              }          }  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表