-[NSScanner scanString:intoString:]
回報NO
因爲你試圖從字符串的開頭進行掃描,而子「超級」不會出現在那裏。
我會用它來試圖說明會發生什麼:
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
第一和第三掃描所有的換行符。
祝你在你的努力中。
我擔心你錯誤的工作原理 - 如果myString是「TextSuper」,由於@trudyscousin在他的答案中提到的原因,這仍然會失敗。 – rdelmar