2016-08-09 3 views
0

Ich bin neu in Ruby und habe ein Programm geschrieben, das mehrere Zeilen von Daten (tatsächlich ein JSON) und konvertiert es in eine Tabelle in der Befehlszeile. Alles funktioniert gut mit den JSON-Daten, die in das Programm eingebettet sind, aber ich möchte, dass der Benutzer aufgefordert wird, die Daten in die Befehlszeile einzufügen. Ich weiß über gets und chomp, aber da ein JSON mit mehreren Zeilen/Zeilenumbrüchen formatiert ist, wenn ich in die Befehlszeile einfügen, nimmt es jede Zeile als separaten Eintrag. Ich habe das Gefühl, dass die Antwort einfach ist, aber ich habe Schwierigkeiten, online Informationen zu finden. Ich möchte nur, dass alles, was ich auf einmal einfüge, alles ignoriert und alle Zeilenumbrüche ignoriert werden.Einfügen von Eingabe in die Befehlszeile mit mehreren Zeilenumbrüchen

Irgendwelche Vorschläge?

+0

Hier ist eine ähnliche Frage, mit einer nicht so schönen Antwort: http://stackoverflow.com/questions/13839940/ruby-gets-that-works-over-multiple-lines - Sonst: Wäre es eine Option zu sein den Benutzer nach einem Dateinamen/Pfad fragen und dann den JSON aus der Datei lesen? – trueunlessfalse

Antwort

0

Wenn Sie Eingaben über die Konsole, $stdin im technischen Sprachgebrauch nehmen, und Sie mehrere unabhängige mehrzeilige Objekte erhalten möchten, müssen Sie eine Art Trennzeichen haben.

Dies könnte so einfach wie eine oder mehrere leere Zeilen zwischen jedem JSON-Objekt sein, oder es könnte ein Marker wie END oder -- sein.

Es hängt davon ab, wie Ihre JSON-Daten formatiert sind, da Leerzeilen innerhalb eines JSON-Objekts gültig sind, aber von den meisten JSON-Generatoren normalerweise nicht ausgegeben werden.

Vergessen Sie nicht, dass das UNIX-Modell stark ermutigt Sie in der Lage sein, die Dinge zu tun, wie folgt aus:

processor < input.json 

Oder Dinge wie diese:

processor *.json 

Wo Sie über mehrere Dateien empfangen können ARGV und diese sequentiell verarbeiten. Das vermeidet viel Unordnung.

Verwandte Themen