在Python中,我可以轻松地加入字符串列表的内容,用一组字符分隔,这样:
>>> L = ["A","B","C"]
>>> string.join(L,"_")
'A_B_C'
在MATLAB中,我可以用这种方式连接字符串的单元格数组:
>> L = {'A','B','C'};
>> [L{:}] % or strcat(L{:}), with trimming of trailing spaces
ans =
ABC
MATLAB中是否有简单的命令模仿string.join添加分隔符的能力?
我知道这可以通过奇怪的构造来完成,例如
[sprintf('%s_',L{1:end-1}), L{end}]
除其他外,还有一种更简单的方法吗?
答案 0 :(得分:5)
我认为MATLAB中没有像string.join这样的内置函数。你对sprintf的陈述可能是最好的方法。
这是另一个更新的FileExchange提交 - STRJOIN。它可能是基于@ BenH的答案的JOIN。
答案 1 :(得分:2)
编辑:从Matlab 2013a开始,有一个名为strjoin
的内置函数我不知道任何内置方式,但我现在使用它(我假设您想要连接'单元格字符串'并且您不想丢失尾随空格):
L = {' A',' B ','C '};
delimiter = '/';
append_delimiter = @(in) [in delimiter];
tmp = cellfun(append_delimiter, L(1:end-1), 'UniformOutput', false);
result = horzcat(tmp{:}, L{end})
>>> ans =
A B C
或者,与功能相同:
function joined_str = strjoin(in_strings, delimiter)
assert(iscellstr(in_strings), 'strjoin:cellstr', '1st argument: cell string');
assert(ischar(delimiter) && (isvector(delimiter) || isempty(delimiter)), ...
'strjoin:string', '2nd argument: string');
append_delimiter = @(in) [in delimiter];
appended = cellfun(append_delimiter, in_strings(1:end-1), 'UniformOutput', false);
joined_str = horzcat(appended{:}, in_strings{end});
end
>> strjoin({' A ', ' B ', ' C '}, '_')
ans =
A _ B _ C
答案 2 :(得分:0)
您可能对文件交换中找到的[join]感兴趣(http://www.mathworks.com/matlabcentral/fileexchange/4872)。