# String mit Nullen füllen



## internet (26. Dez 2013)

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


----------



## DrZoidberg (26. Dez 2013)

Das könnte man z.B so machen

```
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;
```


----------



## Zettelkasten (26. Dez 2013)

Ich würde die Digits-Funktion nicht mit Rekursion lösen, sondern mit einem String-Cast:

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


----------



## ARadauer (26. Dez 2013)

keep it simple...


```
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;
	}
}
```


----------



## kay73 (26. Dez 2013)

Keep it simpler. Das ist doch 
	
	
	
	





```
String.format()
```
 mit variierendem Formatstring, was hier nachgebaut wird, oder?

```
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
	}
}
```


----------

