旧版八度音阶中的空白处的分割线

时间:2018-09-28 15:38:02

标签: string parsing file-io octave

我正在使用以下基于行的输入来解析ASCII文本文件:

    fid = fopen("myFileName", "r");    % open data file
    fgetl(fid);                        % get header variables

对于文件的下一行,我想对其进行解析,并在存在一个或多个空格(即'\ s +')的地方拆分该行。较新版本的Octave为'split'内置命令提供了regexp选项。但是,我使用的Octave版本是3.4.3,目前我还不能升级到任何较新的版本。 'split'选项无法识别,因此我正在寻找解决方法。 strsplit命令似乎不允许对字符串参数使用fgetl(fid),如下所示:

    myVar = strsplit(fgetl(fid), "\s*", "delilmetertype", "regularexpression")

在这种情况下还有其他可行的方法吗?

1 个答案:

答案 0 :(得分:0)

regexp函数确实支持'match'输出类型,甚至返回到Octave版本3.4。因此,不要使用空白模式(\s+)作为分隔符,而使用regexp返回任意数量的非空白字符(\S+)的匹配项列表。

例如

str = 'This is a string with       some space    characters';
m = regexp(str, '(\S+)', 'match')

'match'选项与第四个位置返回值相同,因此以下等效调用也适用

[~, ~, ~, m] = regexp(str, '(\S+)')