特定のパターンの複数の部分文字列を置き換える必要がある大きな文字列 (約 25M 文字) があります。
Frame 1
0,0,0,0,0,1,2,34,0
0,1,2,3,34,12,3,4,0
...........
Frame 2
0,0,0,0,0,1,2,34,0
0,1,2,3,34,12,3,4,0
...........
Frame 7670
0,0,0,0,0,1,2,34,0
0,1,2,3,34,12,3,4,0
...........
削除する必要がある部分文字列は「フレーム #」で、約 7670 回発生します。セル配列を使用して、strrep で複数の検索文字列を指定できます
strrep(text,{'Frame 1','Frame 2',..,'Frame 7670'},';')
ただし、それはセル配列を返します。各セルには、入力セルの1つの対応する部分文字列が変更された元の文字列があります。
regexprep を使用する以外に、文字列から複数の部分文字列を置き換える方法はありますか? strrep よりかなり遅いことに気付いたので、それを避けようとしています。
regexprep を使用すると、次のようになります。
regexprep(text,'Frame \d*',';')
25MB の文字列の場合、すべてのインスタンスを置き換えるのに約 47 秒かかります。
EDIT 1 : 同等の regexprep コマンドを追加しました
EDIT 2 : 参照用の文字列のサイズ、部分文字列の出現回数、および regexprep の実行タイミングを追加