2012-12-09 106 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:@"\""]);