我想连接(用空格填充)元胞数组中的字符串
{'a', 'b'}
以给出单个字符串'a b'
。我怎样才能在 MATLAB 中做到这一点?
您可以稍微作弊一下,使用元胞数组作为 sprintf 函数的一组参数,然后使用 strtrim 清理多余的空格:
strs = {'a', 'b', 'c'};
strs_spaces = sprintf('%s ' ,strs{:});
trimmed = strtrim(strs_spaces);
脏,但我喜欢...
matlab 有一个函数可以做到这一点,
参考:
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
Alex 的答案有小改进(?)
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中引入。然而,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 在世界各地的研究小组中都很丰富。
strjoin
函数,该函数接受两个参数:字符串数组和分隔符。如果字符串不是数组格式,MATLAB 将引发错误。除了上面的答案之外,这对其他人来说可能很简单,但如果您像我一样不熟悉 MATLAB 代码,那么如果字符串不在数组中,则可以按照以下方法连接字符串:
a = 'A';
b = 'B';
ab = strjoin({a, b}, '--');
结果:
A--B