CBHStringSplitter
CBHStringSplitter
是一个 NSEnumerator
子类,使用 NSInputStream
分割字符串,以最小内存使用率处理输入。
虽然 CBHStringSplitter
比等效的 componentsSeparatedByCharactersInSet
略慢,但它不会将整个文件内容加载到内存中。这使得它在某些用例中更为合适。
示例
Using a for in loop process each line in a file
NSString *path = @"/path/to/file";
CBHStringSplitter *splitter = [CBHStringSplitter splitterWithFileAtPath:path andSeparators:[NSCharacterSet newlineCharacterSet]];
for (NSString *line in splitter)
{
// Do something with the line...
}
Using a while loop process each line in a file
NSString *path = @"/path/to/file";
CBHStringSplitter *splitter = [CBHStringSplitter splitterWithFileAtPath:path andSeparators:[NSCharacterSet newlineCharacterSet]];
NSString *line;
while ( (line = [splitter nextObject]) )
{
// Do something with the line...
}
注意事项
- 与
componentsSeparatedByCharactersInSet
不同,如果输入以分隔符字符结尾,则不会将空字符串作为最后一个条目给出。它将直接忽略。
待办事项
- 性能改进
- 简化缓冲
- 基于块的重枚举
欢迎提出拉取请求。
许可协议
CBHStringSplitter 适用于 ISC 许可协议。