0

交換する必要がある巨大な文字列があります

Pattern A to pattern B
Pattern C to Pattern D
pattern E to pattern F

5、6回は弦の一部を交換しなければなりません。

それらを1つずつ置き換えるために直接文字列操作を行うと、巨大なヒープスペースが必要になります。

お気に入りreplaceAll().replaceAll().replaceALL

pattern.compile("(パターンa|パターンc)"); このタイプのパターンを 1 つのパーテン x にのみ置き換えることができます。

この置換を行うためのメモリ効率の良い方法は何でしょうか。

正規表現にはこれを達成する方法がありますか?

4

1 に答える 1

1

私は通常Apacheを信頼しており、必要なものは揃っていますが、複数の文字列置換の実装のメモリ効率についてコメントすることはできません

Apache StringUtils.ReplaceEachRepeatedly

ソースコードを見ると、再帰呼び出しで StringBuffer 操作を使用しているように見えるため、ある程度メモリ効率が良いはずです (スタックスペースが不足することはないと思います)。

Apache の ReplaceEach へのソース コードへのリンク

編集: Apache Commons Lang バージョン 3 は実際に StringBuilder を使用し、文字列置換中のメモリ使用量を最小限に抑えようとしています。ソース コードを確認するか、ライブラリを直接使用することを強くお勧めします。

于 2012-11-29T21:05:25.497 に答える