Ich versuche, alle mehrfachen Leerzeichen in einem Text durch ein einzelnes Leerzeichen zu ersetzen. Dies sollte eine sehr einfache Aufgabe sein, aber aus irgendeinem Grund ist es ein anderes Ergebnis als erwartet zurück. Ich habe die Dokumente über den NSScanner gelesen und es scheint, dass er nicht richtig funktioniert!
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:@" "];
}
}
Aber aus irgendeinem Grund ist das Ergebnis @"ThisisatestofNSScanner!"
anstelle von @"This is a test of NSScanner !"
.
Wenn man sich die Kommentare durchliest und weiß, was die einzelnen Zeilen bewirken sollen, scheint es einfach genug zu sein!? scanUpToCharactersFromSet
sollte den Scanner anhalten, sobald er auf Leerzeichen stößt. scanCharactersFromSet
sollte dann den Scanner über die Leerzeichen hinaus bis zu den Nicht-Leerzeichen vorantreiben. Und dann wird die Schleife bis zum Ende fortgesetzt.
Was habe ich übersehen oder nicht verstanden?