我有一个大字符串(大约 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
...........
我需要删除的子字符串是“Frame #”,它出现了大约 7670 次。我可以使用单元格数组在 strrep 中提供多个搜索字符串
strrep(text,{'Frame 1','Frame 2',..,'Frame 7670'},';')
但是,这会返回一个单元格数组,在每个单元格中,我的原始字符串与我的一个输入单元格的相应子字符串发生了更改。
除了使用 regexprep 之外,有没有办法从字符串中替换多个子字符串?我注意到它比 strrep 慢得多,这就是我试图避免它的原因。
使用 regexprep 它将是:
regexprep(text,'Frame \d*',';')
对于 25MB 的字符串,替换所有实例大约需要 47 秒。
编辑 1:添加了等效的 regexprep 命令
编辑 2:添加了字符串的大小以供参考,子字符串的出现次数和 regexprep 的执行时间