如何在循环中连接字符串?

时间:2015-03-26 16:02:09

标签: string matlab

如何在循环中连接字符串? 例如,我有这个字符数组

fruits = char('apple','pear')

我想看看这个输出

  apple tart
  pear tart

但是当我使用这个循环时:

for f = fruits'
  strcat(f," tart")
end

输出

ans =

a tart
p tart
p tart
l tart
e tart

ans =

p tart
e tart
a tart
r tart
 tart 

实际上我需要这个来读取目录中的一堆csv文件。部分文件名是我想要循环的变量。例如,我的目录包含以下2个文件,我想从中读取数据:

peartart.csv
appletart.csv

这个other answer using a list of files很好但是我无法控制文件中的fruit变量名。我会控制这个变量,因为我将对每个水果数据进行统计测试,并将测试结果与水果名称存储在另一个文件中。

4 个答案:

答案 0 :(得分:3)

使用fruits = char('apple','pear'),你可以创建一个字符的基础。最靠近字符串列表的是一个单元格数组。

fruits = {'apple','pear'}

打开csv应该是这样的:

for f = fruits
  csvread([f{:},'tart.csv'])
end

不确定是否需要t之前的空白,取决于您的文件名。

答案 1 :(得分:2)

如果cellfun是单元格数组,则可以使用fruits无需循环执行此操作:

fruits = {'apple','pear'};
tarts = cellfun(@(x)strcat(x,' tart'),fruits,'UniformOutput',false)

然后,您可以使用tarts{i}

访问字符串
>> tarts{1}

ans =

apple tart

答案 2 :(得分:1)

这是一个解决方案,使用字符串的单元格数组:

fruits={'apple','pear'};
for i_fruit = 1:length(fruits)
  strcat(fruits{i_fruit},' tart')
end

答案 3 :(得分:0)

fruits是一个大小为2x5的2D数组。当你这样做

for f=fruits'

您正在将水果转换为1D列数组并循环遍历每个元素。你应该循环遍历每一行,如下所示:

fruits = char('apple','pear');
for ii=1:size(fruits,1)
   strcat(fruits(i,:),' tart')
end

输出:

ans =

apple tart


ans =

pear tart