在字符串中插入空格 (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
我有一个字符串
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