嵌套的文本扫描语句



以下两个语句从输入文件(fid)中读取第一行,并将该行解析为由空格分隔的字符串。

a = textscan(fid,'%s',1,'Delimiter','n');
b = textscan(a{1}{1},'%s');

我想知道这个动作是否可以在一个单独的语句中完成,它的形式类似于下面(在语法上是无效的)。

b = textscan(textscan(fid,'%s',1,'Delimiter','n'),'%s');

谢谢。

而不是

a = textscan(fid, '%s', 1, 'Delimiter', 'n');

你可以使用

a = fgetl(fid);

这将以字符串的形式返回fid中的下一行(末尾的换行符被剥去)。然后,您可以将该行拆分为空格分隔的块,如下所示:

b = regexp(a, 's*', 'split');

组合:

b = regexp(fgetl(fid), 's*', 'split');

请注意,这并不是100%等同于您的代码,因为使用textscan会添加另一个单元层(表示文件中的不同行)。不过,这不是问题,只需使用

b = {regexp(fgetl(fid), 's*', 'split')};

如果你需要额外的细胞层。

最新更新