如何在Matlab中将字符串拆分为n个长度的子数组?
例如
输入:"ABCDEFGHIJKL"
,其子数组的长度为3
输出:{ABC}, {DEF}, {GHI}, {JKL}
答案 0 :(得分:4)
应该做到这一点:)
string = cellstr(reshape(string, 3, [])')
答案 1 :(得分:4)
如果字符串长度不是n
的倍数,则可能需要循环或arrayfun
:
x = 'ABCDEFGHIJK'; % length 11
n = 3;
result = arrayfun(@(k) x(k:min(k+n-1, end)), 1:n:numel(x), 'UniformOutput', false)
或者,也可以使用accumarray
:
x = 'ABCDEFGHIJK';
n = 3;
result = accumarray(floor((0:numel(x)-1).'/n)+1, x, [], @(t) {t.'}).';
在此示例中,以上两种方法均给出
result =
1×4 cell array
{'ABC'} {'DEF'} {'GHI'} {'JK'}
答案 2 :(得分:3)
正则表达式可以在这里完成工作:
str = 'abcdefgh'
exp = '.{1,3}' %the regular expression (get all the group of 3 char, if number of char left < 3, take the rest)
res = regexp(str,exp,'match')
给出:
res =
1×3 cell array
{'abc'} {'def'} {'gh'}
如果您只想匹配3个字符的组:
exp = '.{3}' %this will output {'abc'} {'def'} but no {'gh'}