Mic*_*all 11 iphone cocoa objective-c nsscanner
我试图用一个空格替换某些文本中的所有多个空格.这应该是一个非常简单的任务,但由于某种原因,它返回的结果与预期不同.我已经阅读了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:@" "];
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,结果@"ThisisatestofNSScanner!"不是@"This is a test of NSScanner !".
如果你仔细阅读评论以及每行应该达到的目的,这看起来很简单!?scanUpToCharactersFromSet应该在遇到空白时停止扫描仪.scanCharactersFromSet然后应该使扫描程序通过空格直到非空白字符.然后循环继续到最后.
我错过了什么或不理解?
Mic*_*all 22
啊,我明白了!默认情况下,NSScanner会跳过空格!
事实证明你必须设置charactersToBeSkipped为nil:
[scanner setCharactersToBeSkipped:nil];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1966 次 |
| 最近记录: |