2013-02-26 2 views
0

У меня есть NSString с парой строк, как это, что 465544664646 является изменение между ними:Анализировать HTML NSString с Regex

data-context-item-title="465544664646" 

Как я разобрать 465544664646 строку в массив?

Редактировать

NSRegularExpression* myRegex = [[NSRegularExpression alloc] initWithPattern:@"(?i)(data-context-item-title=\")(.+?)(\")" options:0 error:nil]; 
[myRegex enumerateMatchesInString:responseString options:0 range:NSMakeRange(0, [responseString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop) { 
    NSRange range = [match rangeAtIndex:1]; 
    NSString *string =[responseString substringWithRange:range]; 
    NSLog(string); 
}]; 
+0

Я нашел несколько способов сделать это, но я успел только одну строку, но не все из них – MTA

+0

Какая у вас строка? это 'data-context-item-title =" 465544664646 "' и вы хотите извлечь '465544664646' и сохранить его в массиве? –

+0

@MTA, даже если код не работает, покажите его пожалуйста! – 2013-02-26 10:07:17

ответ

0

Попробуйте это:

NSString *[email protected]"data-context-item-title=\"465544664646\" data-context-item-title=\"1212121212\""; 

NSMutableArray *substrings = [NSMutableArray new]; 
NSScanner *scanner = [NSScanner scannerWithString:yourString]; 
[scanner scanUpToString:@"\"" intoString:nil]; 
while(![scanner isAtEnd]) { 
    NSString *tempString; 
    [scanner scanString:@"\"" intoString:nil]; 
    if([scanner scanUpToString:@" " intoString:&tempString]) { 
     [substrings addObject:tempString]; 
    } 
    [scanner scanUpToString:@"\"" intoString:nil]; 
} 

//NSLog(@"->%@",substrings); //substrings contains all numbers as string. 


for (NSString *str in substrings) { 
    NSLog(@"->%ld",[str integerValue]); //converted each number to integer value, if you want to store as NSNumber now you can store each of them in array 
} 
0

Что-то вроде этого?

-(NSString *)stringFromOriginalString:(NSString *)origin betweenStartString: (NSString*)start andEndString:(NSString*)end { 
    NSRange startRange = [origin rangeOfString:start]; 
    if (startRange.location != NSNotFound) { 
     NSRange targetRange; 
     targetRange.location = startRange.location + startRange.length; 
     targetRange.length = [origin length] - targetRange.location; 
     NSRange endRange = [origin rangeOfString:end options:0 range:targetRange]; 
     if (endRange.location != NSNotFound) { 
      targetRange.length = endRange.location - targetRange.location; 
      return [origin substringWithRange:targetRange]; 
     } 
    } 
    return nil; 
} 
0

Вы можете использовать

- (NSArray *)componentsSeparatedByString:(NSString *)separator 

метод как

NSArray *components = [@"data-context-item-title="465544664646" componentsSeparatedByString:@"\""]; 

Теперь вы получили строку на 2. Индекс

[components objectAtIndex:1] 

Теперь вы можете создать массив из этого string, используя метод здесь NSString to NSArray