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

Insert spaces in a string (Matlab)

我有一个字符串

   S='ABACBADECAEF'

如何在该字符串的每 2 个字符之间插入一个 space。扩展输出应该是:

 Out_S= 'AB AC BA DE CA EF' 

有几种方法可以做到这一点。所有这些方法都假定您的字符串长度为 even。如果您有奇数个字符,那么最后一对字符将无法组合成一对,因此下面的任何方法都会给您带来尺寸不匹配或越界错误。


方法 #1 - 分成单元格然后使用 strjoin

第一种方法是将字符串分解成单独的单元格,然后通过 strjoin 和 spaces 将它们连接起来:

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

我们得到:

Out_S =

AB AC BA DE CA EF

方法 #2 - 正则表达式

您可以使用正则表达式来计算每个标记恰好 2 个字符,然后在每个标记的末尾插入一个 space,并且 trim 出任何白色 space如果最后碰巧有 spaces 则结束:

Out_S = strtrim(regexprep(S, '.{2}', '[=12=] '));

我们得到:

Out_S =

AB AC BA DE CA EF

方法 #3 - 重塑添加额外的一行 spaces 并重塑回来

您可以重塑字符矩阵,使每对字符成为一列,您可以插入另一行充满 space 的行,然后重塑回来。我们也trim去掉了不必要的白色space:

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

我们得到:

Out_S =

AB AC BA DE CA EF