Ruby: Suche durch Datein

Gossi

Bekanntes Mitglied
Hiho, ich habe ein Problem mit Ruby:

Ich möchte alle Datein im Verzeichnis die mit *.mas.use.txt enden mit allen Datein die mit *.rez.txt enden vergleichen.

Wenn eine Spalte aus den *.rez.txt-Datein in der .mas.use.txt Datei vorhanden ist, soll sie ausgegeben werden, habs nu so geschrieben (im Kommentar steht mein alter Versuch ^^)

Code:
Dir['*.mas.use.txt'].each do |d|
  next unless File.file?(d)
  @data = File.read(d)
  Dir['*.rez.txt'].each do |re|
    next unless File.file?(re)
    @rezept = File.readlines(re)
  end
  for rez in @rezept
    if @data.include? rez
      puts rez
    end
  end
#  for @dat in @data
#    for @rez in @rezept
#      @rez = @rez.delete ","
#      if @dat != nil
#        if @dat.include? @rez
#          puts "Found: " + @dat
#        end
#      end
#    end
#  end
end

Nun gibt er aber immer nur eine Zeile aus, wenn sie sowohl in der .mas, alsauch in der .rez Datei ganz am ende steht, ich hab echt keine Ideen mehr woran das liegt :bahnhof:
 

schalentier

Gesperrter Benutzer
File.read liest ein File komplett ein und liefert einen String zurueck (mit \n drin).
File.readlines liest ein File komplett ein und liefert ein Array mit den einzelnen Zeilen zurueck.

Zudem ist das mit dem inneren Loop so wahrscheinlich nicht korrekt. In deiner aktuellen Implementierung wird immer nur mit dem letzten gefundene *.rez.txt verglichen.
 

Gossi

Bekanntes Mitglied
File.read liest ein File komplett ein und liefert einen String zurueck (mit \n drin).
File.readlines liest ein File komplett ein und liefert ein Array mit den einzelnen Zeilen zurueck.

Zudem ist das mit dem inneren Loop so wahrscheinlich nicht korrekt. In deiner aktuellen Implementierung wird immer nur mit dem letzten gefundene *.rez.txt verglichen.

Danke, werd mir das ganze morgen nochmal genauer anschauen :)
 

Gossi

Bekanntes Mitglied
Habs nu so versucht:

Code:
Dir['*.mas.use.txt'].each do |d|
  next unless File.file?(d)
  @data = File.readlines(d)
  for dat in @data
    Dir['*.rez.txt'].each do |re|
      next unless File.file?(re)
      @rezept = File.readlines(re)
      for rez in @rezept
        if dat.include? rez
          puts rez
        end
      end
    end 
  end
end

Läuft aber immernoch net -.-
[edit]
Hatte vergessen, dass die Zeilen die verglichen werden ein "," beinhalten....
Code:
Dir['*.mas.use.txt'].each do |d|
  next unless File.file?(d)
  @data = File.readlines(d)
  for @dat in @data
    if @dat == nil
      puts @dat + " is nil"  
    else
      Dir['*.rez.txt'].each do |re|
        next unless File.file?(re)
        @rezept = File.readlines(re)
        for @rez in @rezept
          if @rez != nil     
            @rez = @rez[0,8];
            if @dat.include? @rez
              puts "found: " + @rez + " in " + @dat
            end
          end
        end
      end 
    end
  end
end
[/edit]
 
Zuletzt bearbeitet:

Gossi

Bekanntes Mitglied
-.- Zu spät zum ernueten Editieren, aber wens interessiert, hier nochmal ne Variante die nicht das komplette Dir durchsucht:

Code:
#Einlesen der .mas Datei
puts "Bitte geben sie die mas.use.txt an (ohne Dateiendung)"
@mas_datei = gets
@mas_datei = @mas_datei.chomp + ".mas.use.txt"
puts
#Einlesen der Rezeptdatei
puts "Bitte geben sie die Rezeptdatei an (mit Dateiendung)"
@rez_datei = gets
@rez_datei = @rez_datei.chomp
puts

#Oeffnen der mas Datei
@data = File.readlines(@mas_datei)
#Durchlaufen der einzelnen Zeilen
for @dat in @data
  #Auf nil Pruefen
  if @dat == nil
    puts @dat + " is nil" 
  else 
    #Oeffnen der Rezeptdatei
    @rezept = File.readlines(@rez_datei)
    #Durchlaufen der Zeilen
    for @rez in @rezept
      #Pruefung auf nil
      if @rez != nil   
        #Ausschneiden des benoetigten Abschnitts  
        @rez = @rez[0,8];
        #Pruefung ob die Datensaetze uebereinstimmen, dann Ausgeben
        if @dat.include? @rez
          puts @rez
        end
      end
    end
  end
end

#Verhindert beim Starten mit Konsole das Schliessen des Fensters
puts
puts "Zum Beenden bitte Enter druecken"
gets
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Python vs Ruby Softwareentwicklung 7
OnDemand Suche Ideen zu Verteilung von Updates Softwareentwicklung 7
M Pseudocode der Exponentiellen Suche Softwareentwicklung 0
S Suche: (Versionierungs)Tool für Klassenaustausch mit Kollegen, die auch an dem Projekt arbeiten Softwareentwicklung 5
J Suche noch eine Loesung fuer Kommunikation zwischen Webserver und ein Programm Softwareentwicklung 0
R Suche Einbinden Softwareentwicklung 12
M Rekursive Suche in einem Baum Softwareentwicklung 3
M Suche Task-Software (Groupware mit Anpassungsmöglichkeiten) Softwareentwicklung 3
M Suche das "optimale" Web-Framework... Softwareentwicklung 6
O [Suche] sinnvolle BadWord-Liste Softwareentwicklung 8
Quaxli Suche Tutorial für Jasper Report - speziell iReport Softwareentwicklung 8
K Suche freies UML Tool um aus .java dateien Diagramme zu. Softwareentwicklung 8
S binaere Suche Verstaendnisproblem Softwareentwicklung 3
G Suche Ajax Javascript library Softwareentwicklung 10
G Suche Programm für Masken Design für Pflichtenheft Softwareentwicklung 5
G Suche UML Aufgaben mit Lösungen zum Übem Softwareentwicklung 2
K Suche nach regulärem Ausdruck Softwareentwicklung 5
T Suche: Informationen über Online Ticketing Softwareentwicklung 4
T Suche A Star Java Beispielprogramm Softwareentwicklung 2
B Suche Latex-Editor Softwareentwicklung 15
A Jira durch Java ansprechen Softwareentwicklung 18

Ähnliche Java Themen

Neue Themen


Oben