在字符串中插入空格(Matlab)

时间:2015-08-13 02:38:15

标签: string matlab space

我有一个字符串

   S='ABACBADECAEF'

如何在该字符串中的每2个字符之间插入一个空格。被驱逐的输出应该是:

 Out_S= 'AB AC BA DE CA EF' 

1 个答案:

答案 0 :(得分:6)

有几种方法可以做到这一点。所有这些方法都假设您的字符串长度为偶数。如果你有一个奇数字符,那么最后一对字符不能被分组成一对,所以下面的任何方法都会给你一个尺寸不匹配或超出界限的错误。

方法#1 - 拆分为单元格,然后使用strjoin

第一种方法是将字符串分解为单个单元格,然后通过strjoin与空格连接:

Scell = mat2cell(S, 1, 2*ones(1,numel(S)/2));
Out_S = strjoin(Scell, ' ');

我们得到:

Out_S =

AB AC BA DE CA EF

方法#2 - 正则表达式

你可以使用正则表达式来计算每个标记正好2个字符,然后在每个标记的末尾插入一个空格,如果最后碰巧有空格,则剪掉最后的任何空格:

Out_S = strtrim(regexprep(S, '.{2}', '$0 '));

我们得到:

Out_S =

AB AC BA DE CA EF

方法#3 - 重塑添加额外的行空间并重新整形

您可以重塑字符矩阵,使每对字符都是一列,您可以插入另一行空格,然后重新整形。我们还会删除任何不必要的空格:

Sr = reshape(S, 2, []);
Sr(3,:) = 32*ones(1,size(Sr,2));
Out_S = strtrim(Sr(:).');

我们得到:

Out_S =

AB AC BA DE CA EF