如何按位置搜索文本文档

时间:2015-10-27 02:23:12

标签: matlab

我需要搜索大约30行的文本文件。我需要它逐行搜索并根据文本文件中的位置抓取数字,这些数字在整个文本文件中保持不变。目前我需要获得前两个数字,然后获得每行的最后4个数字。我的代码现在:

FileToOpen = fopen(textfile.txt) 

if FileToOpen == -1 
     disp('Error') 
     return; 
end

while true 
     msg = fgetl(FileToOpen) 

     if msg == -1 
         break; 
     end

end

我想尽可能使用fgetl命令,因为我有点知道这个命令,但是如果它们是一种更容易受欢迎的方式。

1 个答案:

答案 0 :(得分:0)

这看起来是一个好的开始。您应该能够使用msg - '0'来获取数字的值。对于ascii代码,数字按正确的顺序(0,1,2,3,4,5,6,7,8,9)彼此相邻放置。使用'0'减去时所执行的操作是使用ascii代码'0'减去msg。然后,您将获得数字

tmp = msg - '0';
idx = find(tmp>=0 & tmp < 10); % Get the position in the row
val = tmp(idx); % Or tmp(tmp>=0 & tmp < 10) with logical indexing.

我同意fgetl可能最适合用于没有特定结构的文本。但是,如果你有一个特殊的文本结构,你可以使用它,从而能够使用更有效的算法。

如果您确实在找到文本中数字的绝对位置后,可以为每次迭代保存msgLength = msgLength + length(msg)并使用它来计算数字的绝对位置。