Possible Duplicate:
How to count the number of lines in an Objective-C string (NSString)?
有没有办法计算 NSString 的行数?
NSString * myString = @"line 1 \n line 2 \n";
行数 = 3;
谢谢
最佳答案
注意 componentsSeparatedByString
不够智能,无法检测 mac/windows/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);
关于objective-c - 有没有办法计算 NSString 的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210364/