Как я могу конкатенировать строки в массиве ячеек с пробелами между ними в MATLAB?
Я хочу объединить (заполнение пробелами) строки в массиве ячеек {'a', 'b'}
, чтобы дать одну строку 'a b'
. Как это сделать в MATLAB?
Ответы
Ответ 1
Вы можете обмануть бит, используя массив ячеек как набор аргументов функции sprintf, а затем очистите лишние пробелы с помощью strtrim:
strs = {'a', 'b', 'c'};
strs_spaces = sprintf('%s ' ,strs{:});
trimmed = strtrim(strs_spaces);
Грязный, но мне он нравится...
Ответ 2
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
Ответ 3
Небольшое улучшение (?) по ответу 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
Ответ 5
Оба 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"
Лично мне нравится решение Alex'а, так как более старые версии Matlab многочисленны в исследовательских группах по всему миру.