我需要使用目标C在文件中执行查找和替换(使用正则表达式)。
我目前的解决方案是这样的:
NSString *string = [NSString stringWithContentsOfFile:sourceFile encoding:NSStringEncodingConversionAllowLossy error:nil];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:[toFind stringValue] options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:[toReplace stringValue]];
[modifiedString writeToFile:sourceFile atomically:YES]
此解决方案存在两个问题:
1 - 我无法获得更换的次数
2 - 我认为加载近300MB的文件时速度并不快,因为我将整个文件作为字符串加载到内存中。
如何获得更换次数,并优化我的解决方案,即使是大文件也能获得良好的性能?
提前致谢
答案 0 :(得分:0)
numberOfMatchesInString
将告知您将替换事件的次数。不是将整个文件加载到内存中,而是将其逐个零碎并保留一个计数器,将numberOfMatchesInString
的结果添加到。