在Matlab中,是否可以创建一个字符串,如:
f1-*f2-*f3-*f4-*f5-*f6
仅作为参数:
f
,1:6
和-*
?
我试过了:
for i=1:6; str = strcat(str, sprintf('f%d %s',i,'-* ')); end
但它并没有很好地工作,而且对于大量文件来说似乎也不合适......或许regexp
更适合这里?
答案 0 :(得分:3)
这为您提供了带有额外尾随分隔符的字符串:
str = sprintf('f%d-*', 1:6)
也许你可以从中删除最后两个字符。通常,数组输入的单个sprintf
非常有效。
答案 1 :(得分:2)
strjoin
使用-*
作为分隔符,strcat
将数字与f
结合使用:
>> strjoin(strcat('f',sprintfc('%d',1:6)),'-*')
ans =
f1-*f2-*f3-*f4-*f5-*f6
因为strcat
接受了单元格数组,所以不需要循环。
答案 2 :(得分:1)
% //Data:
letter = 'f';
numbers = 1:6;
separator = '-*';
%// Let's go:
num = mat2cell(num2str(numbers(:)), ones(1,numel(numbers))); %// cell array
%// of strings from the numbers. Those strings may contain spaces.
%// Those will be removed later
s = strcat('f',num,'-*'); %// concatenate letter and separator to each number
s = [s{:}]; %// contatenate all
s = s(1:end-numel(separator)); %// remove last separator
s(s==' ') = []; %// remove spaces (in case of several-digit numbers)