Matlab 基于分隔符拆分字符串单元格数组
我有一根类似这样的绳子Matlab 基于分隔符拆分字符串单元格数组,matlab,cell-array,Matlab,Cell Array,我有一根类似这样的绳子 12:34 13:45 12:45 现在我想把这个单元格数组分成两部分,用分隔符分隔值。像这样的 12:34 13:45 12:45 第一个 12 13 12 第二个呢 34 45 45 如何在matlab中执行此操作?输入字符串单元格数组- str_cellarr ={ '12:34' '13:45' '12:45'} 转换为单元格数组,每个单元格都有一个拆分字符串的1x2单元格- split1 = cellfun(@(x) strsp
12:34
13:45
12:45
现在我想把这个单元格数组分成两部分,用分隔符分隔值。像这样的
12:34
13:45
12:45
第一个
12
13
12
第二个呢
34
45
45
如何在matlab中执行此操作?输入字符串单元格数组-
str_cellarr ={
'12:34'
'13:45'
'12:45'}
转换为单元格数组,每个单元格都有一个拆分字符串的1x2
单元格-
split1 = cellfun(@(x) strsplit(x,':'), str_cellarr(:),'uni',0)
或者使用@Luis建议的更有效的解决方案-
split1 = regexp(str_cellarr, ':', 'split')
在此之后,您可以采用两种方法
方法#1
转换为2元素
单元格数组,每个单元格包含由分隔符分隔的字符串的每个“集合”:“-
split1_2cols = mat2cell(vertcat(split1{:}),size(str_cellarr,1),[1 1])
最后,将每个集合存储到单独的变量中作为最终输出-
[var1,var2] = deal(split1_2cols{:})
方法#2
使用split1
数组中的每列获取每个集合,并将它们作为单独的变量存储-
var1 = arrayfun(@(n) split1{n}(1),1:size(str_cellarr,1))' %//'
var2 = arrayfun(@(n) split1{n}(2),1:size(str_cellarr,1))' %//'
如果您希望获得字符输出,请使用
char(..)
来获得这些输出。似乎您正在处理时间问题。表示小时:分钟
在这种情况下,最简单的方法就是使用该函数,该函数就是为此而设计的
str = { '12:34'
'13:45'
'12:45'};
[~, ~, ~, H, M] = datevec(str,'HH:MM')
返回:
H =
12
13
12
M =
34
45
45
如果您有分:秒
,它的工作原理相同:
[~, ~, ~, ~, M, S] = datevec(str,'MM:SS')
如果您还需要字符串,请将所有内容推送到num2str
,例如:
MinutesAsString = num2str(M);
稍微简单一点:
split1=regexp(str_cillar,,,'split')代码>聪明的观察+1.