如何连接字符串+ i?

Posted

技术标签:

【中文标题】如何连接字符串+ i?【英文标题】:How to concat string + i? 【发布时间】:2012-01-15 05:59:18 【问题描述】:
for i=1:N
   f(i) = 'f'+i;
end

在 MatLab 中给出错误。用模式 fi 的 N 个字符串初始化数组的正确语法是什么?

似乎连这都行不通:

for i=1:4
  f(i) = 'f';
end

【问题讨论】:

您希望数组f 看起来像什么?将所有单独的 fi 字符串连接在一起的单个字符串?每行一个字符串的字符数组?元胞数组? 对于最新版本的 MATLB,请使用字符串。例如 "asd" + (1:5) 就可以了。 【参考方案1】:

对于 R2014a 之前的版本...

一种简单的非循环方法是使用genvarname 创建一个cell array 字符串:

>> N = 5;
>> f = genvarname(repmat('f', 1, N), 'f')

f = 

    'f1'    'f2'    'f3'    'f4'    'f5'

对于较新的版本...

函数genvarname已被弃用,因此可以通过以下方式使用matlab.lang.makeUniqueStrings来获得相同的输出:

>> N = 5;
>> f = strrep(matlab.lang.makeUniqueStrings(repmat('f', 1, N), 'f'), '_', '')

 f =
   1×5 cell array

     'f1'    'f2'    'f3'    'f4'    'f5'

【讨论】:

这实际上是一个很好的解决方案。我不知道genvarname 仅供参考:genvarname 已弃用。【参考方案2】:

ldueck 在评论中已经提出使用sprintf,但我认为这是值得回答的:

f(i) = sprintf('f%d', i);

在我看来,这是最易读的解决方案,并且还提供了一些很好的灵活性(即,当您想要对浮点值进行四舍五入时,使用类似 %.2f 的东西。

【讨论】:

【参考方案3】:

尝试以下方法:

for i = 1:4
    result = strcat('f',int2str(i));
end

如果您使用它来命名您的代码生成的多个文件,您可以将更多部分连接到该名称。例如,扩展名在末尾,地址在开头:

filename = strcat('c:\...\name',int2str(i),'.png'); 

【讨论】:

【参考方案4】:

让我添加另一个解决方案:

>> N = 5;
>> f = cellstr(num2str((1:N)', 'f%d'))
f = 
    'f1'
    'f2'
    'f3'
    'f4'
    'f5'

如果N 的长度超过两位数 (>= 10),您将开始获得额外的空格。添加对strtrim(f) 的呼叫以摆脱它们。


作为奖励,有一个未记录的内置函数 sprintfc 可以很好地返回一个字符串元胞数组:

>> N = 10;
>> f = sprintfc('f%d', 1:N)
f = 
    'f1'    'f2'    'f3'    'f4'    'f5'    'f6'    'f7'    'f8'    'f9'    'f10'

【讨论】:

【参考方案5】:

您可以使用strcat 连接字符串。如果您打算将数字连接为字符串,则必须先使用num2str 将数字转换为字符串。

此外,字符串不能存储在向量或矩阵中,因此f 必须定义为cell array,并且必须使用(而不是普通的圆括号)进行索引。

f = cell(N, 1);
for i=1:N
   fi = strcat('f', num2str(i));
end

【讨论】:

类似“f(i) = sprintf('%s%d', f, i);”的东西也可以。 我的问题是没有使用大括号来索引 ['f', num2str(i)] 有点短。【参考方案6】:

根据this 看来您必须在尝试使用它之前设置“N”,并且看起来它需要是一个 int 而不是字符串?不太了解 MatLab,但只是我从该网站收集的内容..希望它有所帮助:)

【讨论】:

以上是关于如何连接字符串+ i?的主要内容,如果未能解决你的问题,请参考以下文章

lua中如何实现连接字符串

如何在 VB6 中将连接字符串评估为索引 XPath 表达式

C ++中的字符串和int连接[重复]

bash 字符串连接中的多余空间

Go 字符串连接+=与strings.Join性能对比

Arduino:字符串连接?