-[NSScanner scanString:intoString:]
返回NO
是因为您尝试从字符串的开头进行扫描,并且子字符串 'Super' 没有出现在那里。
我将使用它来尝试说明会发生什么:
BOOL success;
NSString *whatDidIGet;
// 'success' is YES, and 'whatDidIGet' contains "Test\n"
whatDidIGet = nil;
success = [scanner scanUpToString:str intoString:&whatDidIGet];
// 'success' is YES, and 'whatDidIGet' contains "Super"
whatDidIGet = nil;
success = [scanner scanString:str intoString:&whatDidIGet];
// 'success' is NO, and 'whatDidIGet' is nil.
whatDidIGet = nil;
success = [scanner scanUpToString:str intoString:&whatDidIGet];
忽略第一个换行符的原因是您的扫描仪(您设置它的方式)默认忽略空格和换行符,因此它会跳过第一个。最后,再次,因为它跳过空格和换行符,whatDidIGet
所以为零。
编辑:
如果您在实例化扫描仪后立即插入:
[scanner setCharactersToBeSkipped:[[[NSCharacterSet alloc] init] autorelease]];
whatDidIGet
您会在第一次和第三次扫描中看到所有换行符。
在您的努力中向您致以最良好的祝愿。