仅使用一些参数在Matlab中创建字符串

时间:2014-05-08 20:03:12

标签: regex string matlab

在Matlab中,是否可以创建一个字符串,如:

f1-*f2-*f3-*f4-*f5-*f6 

仅作为参数:

f1:6-*

我试过了:

for i=1:6; str = strcat(str, sprintf('f%d %s',i,'-* ')); end

但它并没有很好地工作,而且对于大量文件来说似乎也不合适......或许regexp更适合这里?

3 个答案:

答案 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)