0

Objective 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]

このソリューションには2つの問題があります。

1-オカレンスの数を置き換えることができません

2-ファイル全体を文字列としてメモリにロードしているため、300MB近くのファイルをロードする場合、これはそれほど高速ではないと思います。

行われた置換の数を取得し、大きなファイルでも良好なパフォーマンスが得られるようにソリューションを最適化するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

0

numberOfMatchesInString一致を置換する前に呼び出されると、オカレンスが置換される回数がわかります。ファイル全体をメモリにロードする代わりに、少しずつ実行し、結果を追加するカウンターを保持しますnumberOfMatchesInString

于 2012-07-30T16:52:01.043 に答える