假设我有一个字符串(“G00 X0.0000 Y0.0000”),我需要解析它的内容。这是我的代码:
NSCharacterSet *params = [NSCharacterSet characterSetWithCharactersInString:@"XY"];
//setup the scanner
NSScanner *scanner = [NSScanner scannerWithString:stringToBeScanned];
NSString *scanned = nil;
//scan the string
NSLog(@"%@", stringToBeScanned);
while ([scanner scanUpToCharactersFromSet:params intoString:&scanned]) {
struct keypair code;
code.key = [scanned characterAtIndex:0];
code.value = [[scanned substringFromIndex:1] doubleValue];
NSLog(@"--> %@ [%lu]= (%c, %.4f)", scanned, [scanner scanLocation], code.key, code.value);
}
以及 NSLog 的输出:
G00 X0.0000 Y0.0000
--> G00 [4]= (G, 0.0000)
我的字符集包括“X”和“Y”,我不知道为什么我的 NSScanner 不会在“X0.0000”中扫描 - 它应该找到 Y 并根据我的从 X 到 Y 提取所有内容理解。
我可以从 scanLocation 看到扫描仪在索引 4 处停止(正确),但循环要么不继续,要么评估为假。扫描仪不应该继续循环并找到我的分隔符(从字符集中)并获取数据吗?