文字列( "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)
私のcharacterSetには「X」と「Y」の両方が含まれていますが、NSScannerが「X0.0000」でスキャンしない理由がわかりません-Yを見つけて、XからYまでのすべてをプルする必要があります理解。
scanLocationから、スキャナーがインデックス4で(正しく)停止していることがわかりますが、ループが続行しないか、falseと評価されます。スキャナーはループを続け、(characterSetから)区切り文字を見つけてデータを取得するべきではありませんか?