6 Stimmen

wie man String-Ausgabe mit % in Ruby formatieren?

Ich möchte die Ausgabe eines Strings in Ruby formatieren. Ich kann es mit % tun, aber ich kann es nicht herausfinden.

Anstelle von 201107070928 Ich möchte Folgendes ausgeben 2011\07\070928

puts "%.4s\\%.2s\\%s" % "201107070928"

gibt eine Fehlermeldung aus: `%': zu wenig Argumente (ArgumentError)

10voto

Zabba Punkte 62188

Das ist nicht die Art und Weise, wie Sie es für die Formatierung eines Datums verwenden. Die Art der Verwendung % Formatierung ist:

puts "%.4s\\%.2s\\%s" % ["1","2","3"]

Sie benötigen also mehrere Parameter - einen für jeden der Formatbezeichner.

Wenn Sie ein Datum aus einem String-Datum ausdrucken und formatieren müssen, konvertieren Sie zuerst den String in ein Datum/Zeit-Objekt und verwenden dann strftime :

Vorausgesetzt, die Eingabe ist ein Datum und eine Uhrzeit:

Time.parse("201107070928").strftime("%Y\\%m\\%d%H%M").

5voto

DGM Punkte 26106

Ich werde dies in einer Antwort und nicht in einem Kommentar schreiben, weil ich von dieser Möglichkeit mehr beeindruckt bin. Verwendung von String#auspacken können wir mit einer 4-stelligen / 2-stelligen / alles mit:

"201107070928345345345".unpack("a4a2a*").join('/')
 => "2011/07/070928345345345"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X