2017-11-23 4 views
1

In meinem Produktionscode habe ich festgestellt, dass die Methode java.lang.String#format das erste Zeichen des zu formatierenden Zeichens "isst", wenn es ohne Angabe der Formatierungsparameter verwendet wird.java 1.8: String # format essende Zeichen beim Aufruf ohne Format params

So

String.format("%%myStringValue\r\n"); 

erzeugt die folgende Ausgabe der Konsole: %myStringValue

See, wie eine der Prozentzeichen entfernt wird? Wieso ist es so? Ich konnte im Docblock der Methode keine Hinweise darauf finden.

+3

Wie in [die Dokumentation] (https: // docs. oracle.com/javase/8/docs/api/java/util/Formatter.html) unter "Conversions" wird '%%' in '%' konvertiert. – khelwood

+0

Es funktioniert so, wie es funktionieren soll. Da '%' ein Sonderzeichen in einer Formatzeichenfolge ist, müssen Sie es mit '%%' entschlüsseln, um ein einzelnes Prozentzeichen in der Ausgabe zu erhalten. – Jesper

+0

Mögliches Duplikat von [Wie kann% in String.Format entfernt werden?] (Https://stackoverflow.com/questions/5011932/how-to-escape-in-string-format) –

Antwort

2

Die Sequenz %% ist eine 'Escape-Sequenz' der Lage sein, das% char selbst zu drucken, die sonst als format specifier interpretiert werden würde