Matlab中是否存在多行字符串文字语法,或者是否需要连接多行?
我找到了verbatim包,但它只适用于m文件或函数,而不能在编辑器单元中交互使用。
编辑:特别是在可读性和易于修改代码中的文字之后(想象它包含不同级别的缩进块) - 很容易制作多行字符串,但我正在寻找最方便的sytax来做到这一点。到目前为止我已经
了t = {...
'abc'...
'def'};
t = cellfun(@(x) [x sprintf('\n')],t,'Unif',false);
t = horzcat(t{:});
给出尺寸(t)= 1 8,但显然有点混乱。
编辑2:基本上verbatim
做我想要的,除了它在编辑器单元格中不起作用,但也许我最好的选择就是更新它。我认为应该可以从java界面到编辑器获取当前打开的文件和光标位置。问题是如果在同一个单元格中有多个逐字调用,你将如何区分它们。
答案 0 :(得分:13)
我会去:
multiline = sprintf([ ...
'Line 1\n'...
'Line 2\n'...
]);
答案 1 :(得分:6)
Matlab是一个古怪的例子,字符串中的转义处理是printf
函数族的函数,而不是字符串文字语法。而且没有多行文字。哦,好吧。
我最终做了两件事。首先,使CR()
和LF()
函数分别返回已处理的\ r和\ n,这样您就可以在代码中将它们用作伪文字。我更喜欢这样做而不是通过sprintf()发送整个字符串,因为在那里你可能还有其他反斜杠你不想作为转义序列处理(例如,如果你的一些字符串来自函数参数或从其他地方读取输入)。
function out = CR()
out = char(13); % # sprintf('\r')
function out = LF()
out = char(10); % # sprintf('\n');
其次,在您的示例中创建一个像Perl的join或cellfun / horzcat代码一样的join(glue, strs)
函数,但没有最终的尾随分隔符。
function out = join(glue, strs)
strs = strs(:)';
strs(2,:) = {glue};
strs = strs(:)';
strs(end) = [];
out = cat(2, strs{:});
然后像你一样使用它与单元格文字。
str = join(LF, {
'abc'
'defghi'
'jklm'
});
你不需要像这样的单元格文字中的“...”省略号;省略它们会做一个垂直向量构造,如果行具有不同长度的char字符串就好了,因为它们都被卡在单元格内。仅此一项就可以为您节省一些打字费用。
答案 2 :(得分:1)
有点旧的线程,但我明白了
K
我认为如果让事情变得很容易,但显然这取决于人们正在寻找什么:)