一部のテキストの複数の空白をすべて単一のスペースに置き換えようとしています。これは非常に単純なタスクのはずですが、何らかの理由で予想とは異なる結果が返されています。NSScanner のドキュメントを読みましたが、正しく動作していないようです!
NSScanner *scanner = [[NSScanner alloc] initWithString:@"This is a test of NSScanner !"];
NSMutableString *result = [[NSMutableString alloc] init];
NSString *temp;
NSCharacterSet *whitespace = [NSCharacterSet whitespaceCharacterSet];
while (![scanner isAtEnd]) {
// Scan upto and stop before any whitespace
[scanner scanUpToCharactersFromSet:whitespace intoString:&temp];
// Add all non whotespace characters to string
[result appendString:temp];
// Scan past all whitespace and replace with a single space
if ([scanner scanCharactersFromSet:whitespace intoString:NULL]) {
[result appendString:@" "];
}
}
しかし、何らかの理由で結果@"ThisisatestofNSScanner!"
は@"This is a test of NSScanner !"
.
コメントを読んで、各行が何を達成する必要があるかを読むと、それは十分に簡単に思えます!? scanUpToCharactersFromSet
空白に遭遇したときにスキャナーを停止する必要があります。scanCharactersFromSet
次に、スキャナーを空白を越えて非空白文字まで進める必要があります。そして、ループは最後まで続きます。
何が欠けているか、理解していませんか?