NSScanner,到达解析字符串的末尾

时间:2011-11-15 23:51:31

标签: iphone

我有一个类似

的字符串

“条件: 某些文字可以包含逗号但不总是 ,输入 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循环中,直到扫描结束。有什么想法吗?感谢。

1 个答案:

答案 0 :(得分: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以进行下一次循环迭代。