我需要搜索大约30行的文本文件。我需要它逐行搜索并根据它们在文本文件中的位置获取数字,这些数字将在整个文本文件中保持不变。目前,我需要获取每行的前2个数字,然后是后4个数字。我的代码现在:
FileToOpen = fopen(textfile.txt)
if FileToOpen == -1
disp('Error')
return;
end
while true
msg = fgetl(FileToOpen)
if msg == -1
break;
end
end
我想fgetl
尽可能地使用该命令,因为我对该命令有些了解,但是如果它们是一种更简单的方法,那将非常受欢迎。
这看起来是个不错的开始。您应该可以msg - '0'
用来获取数字的值。对于ASCII码,数字以正确的顺序(0、1、2、3、4、5、6、7、8、9)彼此相邻放置。当您减去时,您要做的'0'
是用的ASCII码减去味精'0'
。然后,您将获得数字为
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)
每次迭代的,然后使用该值来计算数字的绝对位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句