有没有办法计算NSString的行数?
NSString * myString = @"line 1 \n line 2 \n";
Run Code Online (Sandbox Code Playgroud)
lines = 3;
谢谢
当心componentsSeparatedByString是不是足够聪明的MAC /窗/ Unix行结尾之间检测.分离\n将适用于windows/unix行结尾,但不适用于经典的mac文件(并且有一些流行的mac编辑器默认仍然使用这些).你真的应该检查\r\n和\r.
另外,componentsSeparatedByString:是慢,内存饥饿.如果您关心性能,则应重复搜索换行并计算结果数:
NSString * myString = @"line 1 \n line 2 \n";
int lineCount = 1;
NSUInteger characterLocation = 0;
NSCharacterSet *newlineCharacterSet = [NSCharacterSet newlineCharacterSet];
while (characterLocation < myString.length) {
characterLocation = [myString rangeOfCharacterFromSet:newlineCharacterSet options:NSLiteralSearch range:NSMakeRange(characterLocation, (myString.length - characterLocation))].location;
if (characterLocation == NSNotFound) {
break;
}
// if we are at a \r character and the next character is a \n, skip the next character
if (myString.length >= characterLocation &&
[myString characterAtIndex:characterLocation] == '\r' &&
[myString characterAtIndex:characterLocation + 1] == '\n') {
characterLocation++;
}
lineCount++;
characterLocation++;
}
NSLog(@"%i", lineCount);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2723 次 |
| 最近记录: |