String mit Nullen füllen

internet

Top Contributor
Hallo zusammen,

ich habe folgendes Problem:

Ich möchte einen String mir zusammenbasteln, der mir abhängig davon eine vorangestellte null (also 0) an den String macht.

Konkretes Beispiel:
Ich möchte einen String, der maximal eine einstellbare Anzahl an Zeichen hat (int diggits)

int diggits = 5; // Anzahl der Zeichen
Long number = 1; // Nummer

=> Nun sollen dem String 4 führende nullen hinzugefügt werden. Also 00001
Wenn number=10, sollen eben nur 3 Zeichen hinzugefügt werden.
Mir fehlt quasi noch eine Abfrage.

for(int i=0; i<=diggits;i++)
// IF-Abfrage wieviel Zeichen
 
Das könnte man z.B so machen
Java:
static int digits(int n) {
    if(n < 10) return 1;
    else return 1 + digits(n/10);
}

static String generateZeroes(int n) {
    if(n == 0) return "";
    else return "0" + generateZeroes(n-1);
}

generateZeroes(5 - digits(number)) + number;
 
Ich würde die Digits-Funktion nicht mit Rekursion lösen, sondern mit einem String-Cast:
Java:
static int digits(int n) {
  String str = String.valueOf(n);
  int length = str.length;
  if(n < 0) {
    length--;
  }
  return length;
}

Leider musst du hier noch 1 Stelle für das Minus-Zeichen abziehen (das brauchst du aber nur wenn deine Zahl auch negativ sein kann).
 
keep it simple...

Java:
public class Test {

	public static void main(String[] args) {
		System.out.println(prePad(5, '0', "12"));

	}

	public static String prePad(int length, char c, String str) {
		while (length > str.length()) {
			str = c + str;
		}
		return str;
	}
}
 
Keep it simpler. Das ist doch
Code:
String.format()
mit variierendem Formatstring, was hier nachgebaut wird, oder?
Java:
public class ZeroPadDemo {

	static String zeroPad(int value, int pad) {
		return String.format("%0"+pad+"d", value);
	}

	public static void main (final String [] args) {
		System.out.println(zeroPad(1, 5)); // 00001		
		System.out.println(zeroPad(10, 5)); // 00010
	}
}
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben