是否可以在每个单元格中包含一个包含字符串的Mx1单元格数组,并根据分隔符' /'分割每个这样的字符串。 (比如说)并将结果输出到MxN单元阵列,其中N是' /'出现的最大值。所有拆分字符串?
在我的情况下,' /'的出现次数是一致的(非均匀性的可能性通常是实现这样一个函数的问题,尽管可以想象存储NULL值)。
显然这可以通过一个循环实现,调用splitstr M次,但我希望存在一个矢量化解决方案。
帮助澄清。假设我们有
C {1,1} =" 1string / 2string /.../ Nstring"
C {2,1} =" 1string / 2string /.../ Nstring"
...
C {M,1} =" 1string / 2string /.../ Nstring"
我希望D
D {1,1} =" 1string" D {1,2} =" 2string" ...... D {1,N} =" Nstring"
D {2,1} =" 1string" D {2,2} =" 2string" ...... D {2,N} =" Nstring"
...
D {M,1} =" 1string" D {M,2} =" 2string" ...... D {M,N} =" Nstring"
或大致相当的东西(例如;输出不需要是MxN单元阵列;它仍然可以是Mx1单元阵列,但每个单元是带有单元的1xN(或Nx1)阵列是分裂的字符串)。
这是我当前的实现(但是使用M和N代替C和D;抱歉混淆)。
M = strtok(textscan(iID, formatSpec, 'Delimiter', ',', 'HeaderLines', 1){1,1}, '"');
% note that strtok will return a cell array of size TOTAL_ROWS x 1
N = cell(length(M), 3);
for i = 1:length(M)
N(i,:) = strsplit(M{i,1}, '/');
endfor
由于文件很大,我想找到一个矢量化解决方案(如果有的话)。
答案 0 :(得分:3)
您可以使用regexp
'split'
修饰符
D = regexp(C, '/', 'split');
这给出了1x N 单元阵列的 M x1单元阵列。如果要将其折叠为 M x N 单元格数组,请使用
D = vertcat(D{:});