如何将字符串拆分为n个长度的子字符串?

时间:2019-05-08 10:29:56

标签: string matlab split

如何在Matlab中将字符串拆分为n个长度的子数组?

例如

输入:"ABCDEFGHIJKL",其子数组的长度为3

输出:{ABC}, {DEF}, {GHI}, {JKL}

3 个答案:

答案 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'}