如何在 MATLAB 中将元胞数组中的字符串与字符串之间的空格连接起来?

问题描述 投票:0回答:6

我想连接(用空格填充)元胞数组中的字符串

{'a', 'b'}
以给出单个字符串
'a b'
。我怎样才能在 MATLAB 中做到这一点?

string matlab whitespace concatenation cell
6个回答
17
投票

您可以稍微作弊一下,使用元胞数组作为 sprintf 函数的一组参数,然后使用 strtrim 清理多余的空格:

 strs = {'a', 'b', 'c'};
 strs_spaces = sprintf('%s ' ,strs{:});
 trimmed = strtrim(strs_spaces);

脏,但我喜欢...


10
投票

matlab 有一个函数可以做到这一点,

参考:

strjoin

http://www.mathworks.com/help/matlab/ref/strjoin.html

strjoin

将元胞数组中的字符串连接成单个字符串

语法

str = strjoin(C) example

str = strjoin(C,delimiter)

例如:

用空格加入单词列表

使用单个空格将各个字符串连接到字符串元胞数组 C 中。

C = {'one','two','three'};

str = strjoin(C)

str =

one two three

7
投票

Alex 的答案有小改进(?)

strs = {'a','b','c'};  
strs_spaces = [strs{1} sprintf(' %s', strs{2:end})];

4
投票

您可以使用函数 STRCAT 来完成此操作,将空格附加到元胞数组中除最后一个单元格之外的所有单元格,然后将所有字符串连接在一起:

>> strCell = {'a' 'b' 'c' 'd' 'e'};
>> nCells = numel(strCell);
>> strCell(1:nCells-1) = strcat(strCell(1:nCells-1),{' '});
>> fullString = [strCell{:}]

fullString =

a b c d e

0
投票

join
strjoin
均在R2013a中引入。然而,the mathworks 网站关于
strjoin
的内容是:

从 R2016b 开始,建议使用

join
函数来连接字符串数组的元素。

>> C = {'one','two','three'};
>> join(C) %same result as: >> join(C, ' ')

ans = 

  string

    "one two three"

>> join(C, ', and-ah ')

ans = 

  string

    "one, and-ah two, and-ah three"

我个人也喜欢 Alex 的解决方案,因为旧版本的 Matlab 在世界各地的研究小组中都很丰富。


0
投票

您可以使用 MATLAB 的

strjoin
函数,该函数接受两个参数:字符串数组和分隔符。如果字符串不是数组格式,MATLAB 将引发错误。除了上面的答案之外,这对其他人来说可能很简单,但如果您像我一样不熟悉 MATLAB 代码,那么如果字符串不在数组中,则可以按照以下方法连接字符串:

a = 'A';
b = 'B'; 
ab = strjoin({a, b}, '--');

结果:

A--B
© www.soinside.com 2019 - 2024. All rights reserved.