如何在Matlab中对此strsplit函数进行矢量化以使其运行得更快?谢谢
function parts = strsplit(splitstr, str)
splitlen = length(splitstr);
k = strfind(str, splitstr);
parts = cell(length(k)+1, 1);
s = 1;
if isempty(k)
parts{1} = str;
return
end
for i=1:length(k)
parts{i} = str(s : k(i)-1);
s = k(i) + splitlen ;
end
parts{end} = str((k(end) + splitlen) : end);
答案 0 :(得分:6)
您可以通过拨打TEXTSCAN替换您的功能。
str = 'testxyztest2xyztest3';
splitStr = 'xyz';
out = textscan(str,'%s','delimiter',splitStr,'multipleDelimsAsOne',1)
out{1}
ans =
'test'
'test2'
'test3'
答案 1 :(得分:2)
您可以使用regexp(另请注意该页面上的example on string splitting):
out = regexp(str, regexptranslate('escape', splitStr), 'split');
regexptranslate函数转义拆分字符串,以便将其视为文字字符串而不是正则表达式。