在matlab中将字符串与额外的字符和符号连接起来

时间:2016-02-25 11:01:30

标签: matlab

背景:我正在通过uigetfile获取文件,'multiselect'已设置"在"。

现在:用户选择文件。

    filename = [FileName(1) FileName(2) ....]
I have filename = 'name1' 'name2'.....
filename(1) = 'name1'
filename(2) = 'name2'
.
.
.

如何将其转换为filename = {'name1.m','name2.m',.....}

串联如何在这里工作?

[" ...."表示可以有两个文件,或4个,基本上取决于用户选择]

3 个答案:

答案 0 :(得分:3)

这样的东西?

filename ={ 'name1' 'name2'};

filename = 

'name1'    'name2'

output = cellfun(@(x) {horzcat(x,'.m')},filename);

output = 

'name1.m'    'name2.m'

Matlab中的字符串连接与Java中的字符串连接非常相似,基本上如果你有' +' b'这会给你' ab'在Java中,在Matlab中,你连接它[' a'' b']会给你[' ab'](就像连接Char数组一样)。要对所有文件名执行此操作,您需要使用Matlab的cellfun,它将连接应用于您的每个文件名。

---- ---- EDIT

如果你想要1个字符串(1 x 1个单元格)中的所有内容:

output = cellfun(@(x) {horzcat(x,'.m, ')},filename); %//Adds the .m comma space to each string in cell
outputAll = {cat(2,output{:})}; %//Merge all cells together
outputOneString = outputAll{1}(1:end-2); %//remove the comma space at the end of the String

outputOneString =

name1.m, name2.m

答案 1 :(得分:2)

您可以在单元格数组上使用strcat

filenames = {'name1', 'name2', 'name3'};
result = strcat(filenames, '.m')

result = 

    'name1.m'    'name2.m'    'name3.m'

答案 2 :(得分:0)

如果您的意思是希望filename字符串看起来与{'name1.m','name2.m',.....}完全相同,请尝试以下操作:

files = uigetfile('MultiSelect', 'on');
//the files here will have already the extensions of the files (e.g .m, .jpg, etc.)

s = '{'; //create a string s that starts with a {

for i=1:length(files)

    //to add apostrophes, use ''''. This means one single apostrophe
    s = strcat(s, '''',files(i), '''');

    if i ~= length(files)
       //add a comma if it is not the last file
       s = strcat(s, ','); 
    end


end

//finish off with another }, and check your final string s
s = strcat(s, '}')