How can I concatenate strings in a cell array with

2019-01-23 15:38发布

问题:

I want to concatenate (padding with spaces) the strings in a cell array {'a', 'b'} to give a single string 'a b'. How can I do this in MATLAB?

回答1:

You can cheat a bit, by using the cell array as a set of argument to the sprintf function, then cleaning up the extra spaces with strtrim:

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

Dirty, but I like it...



回答2:

matlab have a function to do this,

ref:

strjoin

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

strjoin

Join strings in cell array into single string

Syntax

str = strjoin(C) example

str = strjoin(C,delimiter)

Ex:

Join List of Words with Whitespace

Join individual strings in a cell array of strings, C, with a single space.

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

str = strjoin(C)

str =

one two three


回答3:

Small improvement (?) on the answer by Alex

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


回答4:

You can accomplish this using the function STRCAT to append blanks to all but the last cell of your cell array and then concatenate all the strings together:

>> 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


回答5:

Both join and strjoin are introduced in R2013a. However, the mathworks site about strjoin reads:

Starting in R2016b, the join function is recommended to join elements of a string array.

>> 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"

Personally I like Alex' solution as well, as older versions of Matlab are abundant in research groups around the world.