2012-12-09 104 views
0

我想在NSString中搜索特定的值。NSString模式搜索

<INPUT TYPE="HIDDEN" NAME="one" VALUE="getthisvalue"> 
<INPUT TYPE="HIDDEN" NAME="two" VALUE="getthisvalue"> 
<INPUT TYPE="HIDDEN" NAME="three" VALUE="getthisvalue"> 
<INPUT TYPE="HIDDEN" NAME="four" VALUE="getthisvalue"> 

我需要在上面的代碼中獲得「getthisvalue」。我正在考慮使用掃描儀。

在此先感謝!

+1

'NSRegularExpression',也許?或者如果'NSScanner',那麼你已經有了什麼? – 2012-12-09 16:51:07

+1

正則表達式,掃描器是很棒的類。或者你可以使用簡單的字符串和數組操作,seperatedByString:@「=」將給你getthisvalue在最後的索引。然後截斷「從索引0並存儲到長度2(放棄」>)。 –

+0

感謝您的快速幫助,我設法讓它與掃描儀類一起工作。我從名字掃描直到行尾:) – caesiium

回答

0

使用下一個方法(注意:使用ARC):

-(NSMutableArray*)scanInString:(NSString*)string beforeValue:(NSString*)beforeValue afterValue:(NSString*)afterValue{ 
    NSMutableArray *foundedResults = [NSMutableArray new]; 
    NSString *allString = [[NSString alloc] initWithString:string]; 
    BOOL isHavingValue = NO; 
    do{ 
     NSRange beforeRange = [allString rangeOfString:beforeValue]; 
     if(beforeRange.location != NSNotFound){ 
      int beforePos = beforeRange.location + beforeRange.length; 
      allString = [allString substringFromIndex:beforePos]; 
      NSRange afterRange = [allString rangeOfString:afterValue]; 
      if(afterRange.location != NSNotFound){ 
       isHavingValue = YES; 
       int afterPos = afterRange.location; 
       NSRange valueRange = NSMakeRange(0, afterPos); 
       NSString *value = [allString substringWithRange:valueRange]; 
       if(value){ 
        [foundedResults addObject:value]; 
       } 
      } 
      else{ 
       isHavingValue = NO; 
      } 
     } 
     else{ 
      isHavingValue = NO; 
     } 
    }while (isHavingValue); 
    return foundedResults; 
} 

呼叫:

NSString *string = @"<INPUT TYPE=\"HIDDEN\" NAME=\"one\" VALUE=\"getthisvalue\"><INPUT TYPE=\"HIDDEN\" NAME=\"two\" VALUE=\"ILYA2606\"><INPUT TYPE=\"HIDDEN\" NAME=\"three\" VALUE=\"XXX\"><INPUT TYPE=\"HIDDEN\" NAME=\"four\" VALUE=\"getthisvalue\">"; 
NSLog(@"results = %@", [self scanInString:string beforeValue:@"VALUE=\"" afterValue:@"\""]);