我有一个非常长的字符串,我想找到所有的NaN值并将其替换为'Null'.这个长字符串是从120 x 150000单元格转换而来的.将它转换为长字符串的原因是我要将它转换为一个巨大的SQL查询,因为fastinsert和datainsert可能非常慢,有时候我的堆空间已经用完了.我们的想法是做到以下几点
exec(sqlConnection, long_string)
Run Code Online (Sandbox Code Playgroud)
我尝试使用regexpreop将NaN替换为null,但似乎非常慢.有替代方法吗?
long_string = regexprep(long_string,'NaN','null');
Run Code Online (Sandbox Code Playgroud)
正如Floris所说,这regexp
是一个非常强大的命令,因此比其他查找命令慢.
除了Floris的建议,你可以尝试使用strrep
哪种方法适用于你的情况,因为你没有使用任何特殊的权力regexp
.
这是一个例子:
str = char('A' + rand(1,120 * 15000)*('z'-'A'));
tic
str2 = strrep(str, 'g', 'null');
disp('strrep: '), toc
tic
str3 = regexprep(str, 'g','null');
disp('regexprep: '), toc
Run Code Online (Sandbox Code Playgroud)
在我的电脑上它将返回:
strrep:
Elapsed time is 0.004640 seconds.
regexprep:
Elapsed time is 4.004671 seconds.
Run Code Online (Sandbox Code Playgroud)