0

我需要使用目标 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 的文件时这并不是很快,因为我将整个文件作为字符串加载到内存中。

我怎样才能获得替换的数量,并优化我的解决方案,即使是大文件也能获得良好的性能?

提前致谢

4

1 回答 1

0

numberOfMatchesInString在替换匹配项之前调用将让您知道某个事件将被替换多少次。与其将整个文件加载到内存中,不如逐个进行并保留一个计数器,将结果添加numberOfMatchesInString到其中。

于 2012-07-30T16:52:01.043 回答