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

时间:2011-03-13 21:14:09

标签: string matlab whitespace concatenation cell

我希望将单元格数组{'a', 'b'}中的字符串连接(用空格填充)以提供单个字符串'a b'。我怎么能在MATLAB中做到这一点?

5 个答案:

答案 0 :(得分:17)

你可以通过将单元格数组用作sprintf函数的一组参数,然后使用strtrim清理多余的空格来作弊:

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

很脏,但我喜欢它......

答案 1 :(得分:10)

matlab具有执行此操作的功能,

REF:

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

答案 2 :(得分:7)

亚历克斯答案的小改进(?)

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

答案 3 :(得分: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

答案 4 :(得分:0)

R2013a中引入了joinstrjoin。但是,the mathworks site about 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版本。