2016-03-07 57 views
2

我需要算一个字符串的出现次数在determinated文件,我使用从定义的位置扫描一个txt文件来定义的位置

a = File.read(file) 

打开文件和计数/扫描与

a.scan(string){cont = cont + 1} 

,但我需要从定义的位置发生数到定义的文件的位置..例如:从a[4502]a[9549]

我不知道是否需要剪切文件,并在此扫描后,或者如果我可以使用简单循环(while,for,until,break,redo和retry)解决此问题,或者如果我可以使用命令

arq.seek(arg, IO::SEEK_SET) 

请问,有人可以帮助我吗?

+2

['File#read'](http://ruby-doc.org/core-2.2.0/IO.html#method-c-read)接受偏移量和长度,但我不确定你是否将偏移量定义为行,字符,字节等'File.read(file,5047,4502)'可能适用于你,其中'4502'是文件开头的偏移量,'5047'(9549 - 4502)是要读取的长度。 – engineersmnky

+1

另外,使用工程师的建议,计数应该用'String#count'轻松完成。 – sawa

+0

我第二@engineersmnky - 你如何计算抵消?行或字节? – ezuk

回答

0

我用@engineersmnky建议匹配

文件#读取接受一个偏移量和一个长度,但我不确定你是否定义了偏移量作为行,字符,字节等,例如: File.read(文件,5047,4502)为您可能会奏效,其中4502是从文件和5047(9549 - 4502)开始偏移 是长度 阅读

它解决了我问题。

0

只是遍历文本文件,添加索引每行和计数只有在两者之间fromto行号(从零算起)

cont = 0 
    File.open(file).each_with_index do |l,ix| 
    cont += l.scan(string).count if (from..to).cover? ix 
    end