Ruby kullanarak bir dosyayı nasıl açabilirim? BöyleDosya açmak ve sözcük aramak nasıl?
cevap
File.readlines(file).each {|l| l.grep(/#{exp_search}/).each {|r| puts file + ' : ' + r}}
şey yardımcı olabilir:
def word_exists_in_file
f = File.open("your_file.txt") #opens the file for reading
f.each do line
print line
if line.match /your_word_to_match/
return true
end
end
false
end
Tüm sunulan çözüm O (n) bir zaman karmaşıklığını var. Basitlik için kelimeyi kontrol etmek için String#include?
kullanıyorum. Bunun yerine string=~ regex
formunda düzenli bir ifade ile yapılabilir.
Dosyanın tamamını okuyun ve içinde arayın. Dosyanız çok büyükse belleğe tam dosyasını okumak ve sonrasında aramaya başlar gibi
File.read(filename).include?(word)
, bu, optimal bir çözüm değildir. Hafızanız karmaşıklığı
dosyayı satır satır okuyun ve her satırında arama (n) O
File.open(filename) do |f|
f.any? do |line|
line.include?(word)
end
end
dosya çok büyük, ancak çizgiler sabit bir değerle upperbounded edilir biliyorsanız, şimdi O (1) bir bellek karmaşıklığı var. Dosyanın
Oku parçaları ve
File.open(filename) do |f|
tmp= f.read(1024)
next true if tmp.include?(word)
until f.eof?
tmp= tmp[(-1*word.size)..-1] + f.read(1024)
next true if tmp.include?(word)
end
next false
end
Bu varyantta, biz dosyadan equaly büyüklüğünde parçalar okuduğunuz arama. Yani ne olursa olsun dosyanın koşulları nelerdir, bizim bellek karmaşıklığı O (1)
Vay, orijinal sorudan çok daha fazla derinlikte harika bir açıklama. Mini öğretici için çok teşekkürler :) –
Üçüncü/yığın çözümde, aradığınız kelime bir seferde okuduğunuz 1024 bayt sınırını aşarsa bu başarısız olamaz mı? – canhazbits
@canhazbits satır 5, aranan sözcüğün yığın sınırını kapsadığı durumu ele almak için önceki yığının sonunu tutar. Ne kadar tutulur kelime büyüklüğüne bağlıdır. – johannes
deneyin mücevher 'search_in_file', bu
- 1. Android'de bir metin görünümünde bir dizede sözcük aramak ve kelimeyi vurgulamak nasıl? Benim android uygulamasında
- 2. Dosya açmak için kimlik bilgileri nasıl sunulur?
- 3. Birden çok sözcük için birden fazla dosya aranıyor
- 4. Tarayıcıyı açmak için yetkilendirmek yerine dosya
- 5. Dosya yollarının bir listesini yapmak için Anahtar sözcük nasıl kullanılır
- 6. f # anahtar sözcük kullanım ve
- 7. Notepad ++ Regex Bir sözcük içeren ve sözcük içermeyen satırı bul
- 8. Filezilla'dan Vim konsoluna dosya açmak mı istiyorsunuz?
- 9. Aynı pencerede dosya açmak için atom ayar?
- 10. Birden çok dosya içinde belirli satırları açmak
- 11. eşleşen sözcük sınırları 2.7
- 12. Wordnet'te "sözcük dosyası" nasıl bulunur?
- 13. IntelliJ IDEA'da dosya açmak için tek tıklatmayla nasıl ayarlanır?
- 14. Bir grup li etiketi aramak ve aramayı
- 15. Bir sözcük etiketinde doğru sözcük kaydırma
- 16. Delphi ve MSG dosya
- 17. Eclipse: Project Explorer'da klasör ve kaynakları aramak
- 18. NSString'ten sözcük silme
- 19. Win8 mağaza uygulamasında URL ile bir dosya açmak
- 20. fotokopi ve uzak makineye dosyaları açmak - karınca
- 21. Spesifik olmayan sözcük grupları
- 22. Yakut açmak dizi nasıl yapabilirim
- 23. nasıl android emülatör açmak için?
- 24. Python korursak tüm sözcük
- 25. Ack'ya aramak istediğim dizini nasıl verebilirim?
- 26. Geri aramak için "bekleme" nasıl yapılır?
- 27. Raket kullanarak sözcük kapanışları
- 28. regex tüm sözcük seçeneği
- 29. Çözümümden bir dosya açmak için VS2012 Hızlı Başlatma'yı kullanabilir miyim?
- 30. Geri aramak için nesnenin anahtarı nasıl çağırılır?
sahip yoluna göre birçok dosya belirtilen dosyada veya cümlenin kelimesini aramak için yardımcı olur En azından bir arama yaptın mı? –
@Mitch: Bir arama yapması gerekmiyor, çünkü aslında aynı soruyu daha önce iki kez sordu. –
@Whoever, bunu kapatmak için oy kullandı: soru sizi rahatsız edebilir (çünkü OP'nin bir kitap veya herhangi bir şeyi arama veya okuma istemesi gerekir), ancak açık ve gerçek bir programlama sorusu. İsterseniz oy verin, ancak SO'nun sorulara yönelik yönergelerini nasıl ihlal ettiğini göremiyorum. Spesifik, en az bir programcı ilgilenmek zorundadır ve yazı net ve basittir (dilbilgisini bir kenara koymak). 'Ayrıntılı' gereksinim zor, ama bence bu soru şu şekilde olması gerektiği kadar ayrıntılı: * Bu programlama dili ile * bu büküm * ile * bu özel şeyi * nasıl yaparım *. – Telemachus