我正在使用此方法查找第一个<>耦合成一个字符串(XML内容):
NSScanner* scanner = [NSScanner scannerWithString:contentToParse];
int startPos = 0;
int endPos = 0;
// Open search
if ([scanner scanString:@"<" intoString:nil]) {
startPos = [scanner scanLocation]-1;
NSLog(@"found '<' at pos %i", startPos);
// close search
if ([scanner scanString:@">" intoString:nil]) {
endPos = [scanner scanLocation]-1;
NSLog(@"found '>' at pos %i", endPos);
NSString* tag = [contentToParse substringWithRange:NSMakeRange(startPos, endPos-startPos)];
NSLog(@"Tag found : %@", tag);
}
}
但只有“找到”&lt;'在pos 0“被记录。 我的XML内容包含许多&lt;&gt;项...
为什么这种方法不起作用?
答案 0 :(得分:3)
scanString:intoString:
尝试扫描当前位置的字符串参数 。如果当前位置不存在此类字符串,则只返回NO
。
您可能需要使用scanUpToString:intoString:
(reference)来扫描推进扫描位置,直到遇到给定的字符串。
NSScanner *scanner = [NSScanner scannerWithString:contentToParse];
// open search
[scanner scanUpToString:@"<" intoString:nil];
if (![scanner isAtEnd]) {
[scanner scanString:@"<" intoString:nil];
// close search
NSString *tag = nil;
[scanner scanUpToString:@">" intoString:&tag];
if (![scanner isAtEnd]) {
NSLog(@"Tag found : %@", tag);
}
}