2011-11-15 39 views
0

我有一個字符串,就像NSScanner,達到解析字符串的結尾

「條件:一些文本,可以有它的一個逗號,但並不總是,類型more text產品:更多文本,可以是NULL有時

我所做的是:

NSString *condition = @"Condition:"; 
NSString *type = @", Type"; 
NSString *product = @"Product:"; 

NSScanner *scanner = [NSScanner scannerWithString:myString]; 

[scanner scanString:condition intoString:NULL]; 
[scanner scanUpToString:type intoString &conditionName]; 
[scanner scanUpToString:type intoString:NULL]; 
[scanner scanUpToString:product intoString:&typeName]; 
[scanner scanString:product intoString:NULL]; 
// stuck here 

我不知道如何掃描,直到字符串的結尾,因爲scanString:intoString:接受NSString參數。我不確定如何將這些放入一個while循環中,以便掃描直到結束。有什麼想法嗎?謝謝。

回答

0

大概:

while (![scanner isAtEnd]) { 
    [scanner scanString:condition intoString:NULL]; 
    [scanner scanUpToString:type intoString:&conditionName]; 
    [scanner scanString:type intoString:NULL]; 
    [scanner scanUpToString:product intoString:&typeName]; 
    [scanner scanString:product intoString:NULL]; 
    [scanner scanUpToString:condition intoString:&productName]; 
    // do something with read variables 
} 

從文檔:

如果搜索字符串(stopString)不存在掃描儀的源字符串中的源字符串的其餘部分投入stringValue的,接收者的scanLocation被提前到源字符串的末尾,並且方法返回YES。

因此,您應該再次在字符串的末尾掃描最多condition以進行下一次迭代循環。