2016-08-09 24 views
0

Ich füge neue Zeilen zu einer Textdatei. HierRuby: Hinzufügen einer neuen Zeile Probleme

ist der Code:

def save_line_o_a(date, name, amount) 
    open("accounts.txt","a+") do |account_file| 
     account_file.write "#{date};#{name};#{amount};#{amount}; " 
    end 
end 

Das Problem ist, dass nach jedem #{amount}, ich habe eine neue Linie, ist es nicht auf der gleichen Linie writen:

Exemple:

2016-08-09 15:26:16 +0200;Original amount;450 
;450 
; 

Edit (gedrückt geben Sie zu schnell ...) Könnte mir jemand erklären, warum es das tut?

+4

Die 'Menge' von Parametern ist eine Zeichenfolge mit einem Zeilenumbruch darin. Fix den Code, der es erzeugt. –

+0

Außerdem können Sie Fehler (selbst!) Viel schneller beheben, wenn Sie ein paar einfache Tricks lernen. Debug-Druck ist einer von ihnen. Line Debugger ist ein anderer. –

+0

Ich habe es komplett vergessen. Aber ich habe versucht, einen String mit all diesen Parametern zu "chomp", deos chomp funktioniert nur für das letzte \ n (in diesem Fall)? – Andromelus

Antwort

1

Wie in den Kommentaren angegeben, besteht das Problem darin, dass in den Feldwerten Zeilenumbrüche enthalten sind. Die beste Lösung wird sein, sie zu entfernen (oder sie nicht an erster Stelle zu erstellen), wo auch immer diese Daten herkommen.

Wenn Sie nicht, dass aus irgendeinem Grunde tun können-und da Sie nicht, dass Code mit nicht geteilt uns-hier ist eine einfache Möglichkeit, es nach der Tat zu tun:

def save_line_o_a(date, name, amount) 
    open("accounts.txt","a+") do |account_file| 
    new_line = "#{date};#{name};#{amount};#{amount}; ".tr("\n", " ") 
    account_file.write(new_line) 
    end 
end 

Diese verwendet String#tr zu ersetzen alle Newline (\n) Zeichen in der Zeichenfolge mit einem Leerzeichen. Um sie vollständig zu löschen, verwenden Sie "" (eine leere Zeichenfolge) anstelle von " ".

+0

Eigentlich sollte 'answer' im Caller behoben sein. Es ist eindeutig etwas Nummerähnliches gemeint. –

+0

@SergioTulentsev Ich habe eine Notiz zu diesem Zweck hinzugefügt. –

Verwandte Themen