Как я могу объединить строки в массиве ячеек с пробелами между ними в MATLAB?
Я хочу объединить (заполнение пробелами) строки в массиве ячеек {'a', 'b'}
дать одну строку 'a b'
. Как я могу это сделать в MATLAB?
5 ответов
вы можете немного обмануть, используя массив ячеек в качестве набора аргументов для функции sprintf, а затем очистить дополнительные пробелы с помощью strtrim:
strs = {'a', 'b', 'c'};
strs_spaces = sprintf('%s ' ,strs{:});
trimmed = strtrim(strs_spaces);
грязный, но мне нравится...
matlab имеет функцию для этого,
ref:
http://www.mathworks.com/help/matlab/ref/strjoin.html
strjoin
объединить строки в массиве ячеек в одну строку
синтаксис
str = strjoin(C) example
str = strjoin(C,delimiter)
Ex:
Присоединяйтесь к списку слов с пробелами
объединение отдельных строк в массив ячеек строк, C, с a единое пространство.
C = {'one','two','three'};
str = strjoin(C)
str =
one two three
небольшое улучшение (?) на ответ Алекса
strs = {'a','b','c'};
strs_spaces = [strs{1} sprintf(' %s', strs{2:end})];
вы можете выполнить это с помощью функции функции 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
и join
и strjoin
введены в R2013a. Однако,сайт 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"
лично мне нравится решение Алекса, а также более старые версии Matlab в изобилии в исследовательских группах по всему миру.