2016-03-07 54 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