1. 程式人生 > >NSString 字串中提取目標欄位 & 擷取的三種方法

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