2017-10-11 4 views
0

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 ..

+0

"kann ich erreichen dies auch mit einem String.format": 'String.format (".% s% s% s", s.substring (0, 4), s.substring (4, 7), sstring (7)). –

+2

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

+0

@AndyTurner Hehe, ja, ich weiß, dass es so möglich ist. ;) Redigiert meine Frage. –

Antwort

1

Eine effizientere Art und Weise, dies zu tun, als substring verwendet, ist ein StringBuilder zu verwenden: dies hat die append(CharSequence,int,int) Methode, die Ihnen nicht unnötig zu können Strings zu erstellen:

String formatted = 
    new StringBuilder(s.length() + 2) 
     .append(s, 0, 4) 
     .append('.') 
     .append(s, 4, 7) 
     .append('.') 
     .append(s, 7, s.length()) 
     .toString(); 
Verwandte Themen