【发布时间】:2019-01-23 22:08:35
【问题描述】:
我从这篇帖子Objective-c Line breaks every 10 characters (Keeping words in tact) 中找到了这个算法,问题是它永远不会返回最后一个单词,它总是以某种方式丢弃它。
NSString *sourceStr = @"The Chocholate Experience in the Anna Ice Cream Museum - Spanish";
NSMutableString *resultString = [[NSMutableString alloc] init];
NSMutableString *currentLine = [[NSMutableString alloc] init];
NSMutableArray *stringsArray = [[NSMutableArray alloc] init];
NSScanner *scanner = [NSScanner scannerWithString:sourceStr];
NSString *scannedString = nil;
while ([scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceCharacterSet] intoString: &scannedString]) {
if ([currentLine length] + [scannedString length] <= 23) {
[currentLine appendFormat:@"%@ ", scannedString];
}
else if ([currentLine length] == 0) { // Newline but next word > 23
[resultString appendFormat:@"%@\n", scannedString];
}
else { // Need to break line and start new one
[resultString appendFormat:@"%@\n", currentLine];
[currentLine setString:[NSString stringWithFormat:@"%@ ", scannedString]];
}
[scanner scanCharactersFromSet:[NSCharacterSet whitespaceCharacterSet] intoString:NULL];
}
NSLog(@"Result String: \n%@", resultString);
I get this as the output:
The Chocholate
Experience in the Anna
Ice Cream Museum -
去掉最后一个单词是西班牙语。任何人都可以看到错误?我已经在这几个小时了。任何帮助将不胜感激
【问题讨论】:
标签: ios objective-c nsstring nsscanner