我正在尝试将每个用新行分隔的字符串的单元格数组合到Matlab中的一个字符串中。 以下方法合并字符串,但最终字符串包含\ n而不是新行:
function str = toString(self)
% some not important logic that creates cell array called strings
% ...
str = '';
for i = 1 : 9
str = strcat(str, strings(i), '\n');
end
end
返回:' 111\n 111\n 111\n333666444555\n333666444555\n333666444555\n 222\n 222\n 222\n'
当我在方法结束之前添加str = sprintf(str);
时,它会返回无效格式错误。但是,当我写入Matlab命令窗口sprintf(' 111\n 111\n 111\n333666444555\n333666444555\n333666444555\n 222\n 222\n 222\n');
时,它返回格式化的字符串,没有任何错误。
任何人都知道可能会出现什么问题?为什么它在命令窗口中工作但不在.m文件中?
答案 0 :(得分:2)
sprintf将遍历元素或单元格数组:
sprintf('%s\n', strings{:})
循环的问题是'\ n'是一个2元素的char数组,但你想要的是sprintf('\ n')