Ich habe folgende Lange: 201700112345
, und ich möchte es in 2017.001.12345
konvertieren.String.format zum Hinzufügen von Punkten zu Long/String
Ich weiß, dass ich nur einen Teil verwenden:
long l = 201700112345L;
String s = Long.toString(l);
String result = s.substring(0,4)+"."+s.substring(4,7)+"."+s.substring(7);
Aber kann ich das auch mit einem String.format
EDIT erreichen: ..mit einen einzigen Eingang für die Objekt varargs Parameter der String.format
Methode?
Einige Dinge, die ich habe versucht:
String.format("%4d.%3d.%5d", l);
// Which resulted in:
java.util.MissingFormatArgumentException: Format specifier '%3d'
, die ganz offensichtlich ist mir klar, weil ich einen Eingang nur statt drei haben ..
Ich weiß, dass ich an den gleichen Eingang Rückzieher kann mit %1$
, so dass ich dann versucht:
String.format("%4d.%1$3d.%1$5d", l);
// Which resulted in:
201700112345.201700112345.201700112345
ich habe auch versucht diese, die die richtigen Längen gab, aber nicht die richtigen Teile:
Ich muss zugeben, ich habe String.format
all das oft nicht verwendet, so dass ich nicht sicher bin, ob es überhaupt möglich ist, eine Art Teilstring als Format zu haben. Und wenn es möglich ist, ich kann es nicht herausgefunden ..
"kann ich erreichen dies auch mit einem String.format": 'String.format (".% s% s% s", s.substring (0, 4), s.substring (4, 7), sstring (7)). –
vielleicht etwas wie [diese Frage SO] (https://stackoverflow.com/questions/5114762/how-do-format-a-phone-number-as-a-string-in-java) kann Ihnen helfen (einfach verwenden Punkte statt Bindestriche ..) – Nino
@AndyTurner Hehe, ja, ich weiß, dass es so möglich ist. ;) Redigiert meine Frage. –