# String nach Integer und führende Nullen



## Mork (3. Sep 2007)

Hallo,

ich habe in einer WebAnwendung Eingabefelder für String, zb eine Materialnummer, die der Benutzer zb als 123.456.12-11 eingeben kann oder eben auch ganz anders. An einer einzigen, bestimmten Stelle brauche ich aber Integer daraus in einem bestimmten Format.

Habt ihr sowas schonmal gemacht und alle Fälle durchdacht? Oder gibts da vielleicht was generisches in Java?

Ich muss also in einem ersten Schritt den String "normalisieren", also ".", "-", usw entfernen. In einem zweiten Schritt will ich den Int mit führenden Nullen auffüllen, das geht mit IntegerFormat oder?

Würde mich mal  interessieren, ob das die beste Variante ist. Also mit replaceAll und IntegerFormat.


----------



## Murray (3. Sep 2007)

1. Wenn du den Wert als Integer brauchst, dann sind führende Nullen doch irrelevant, oder? 
2. Ist durch eine Beschränkung der Länge sichergestellt, dass sich der eingegebene Wert überhaupt als Integer darstellen lässt? Evtl. brauchst du eher Long oder sogar BigInteger.


----------



## Mork (3. Sep 2007)

Ach quatsch, ich red blödsinn, sorry.

Ich brauche als Endwert einen String, der aber aussieht wie ein echter Int mit führenden Nullen und ohne die benannten Zeichen.


----------



## Murray (3. Sep 2007)

replaceAll funktioniert; mit der Hand am Arm selbst programmiert ist es aber auch nicht viel schwieriger.


```
String str = "99.876.1312-234.234 234";

		String s1 = str.replaceAll( "\\D", "");

		StringBuilder sb = new StringBuilder();
		for ( char c : s1.toCharArray()) {
			if ( Character.isDigit( c)) sb.append( c);
		}
		String s2 = sb.toString();		
		System.out.println( s1.equals( s2));
```

Die führenden Nullen würde ich lieber als String-Operation einfügen; hier den String zwischenzeitlich in eine Ganzzahl zu wandeln, um die dann mit einem Formatter wieder in eine String-Repräsentation zu überführen, erscheint mir zu umständlich.

//EDIT: Typo


----------



## Murray (3. Sep 2007)

Zum Einfügen der führenden Nullen: mit Hilfe der Forensuche habe ich mich an diesen Thread erinnert; die Diskussion bleibt zwar nicht immer 100% beim Thema (mea culpa), aber dort geht es um ein ähnliches Problem (nur eben mit Leerzeichen statt der Nullen).


----------



## byte (3. Sep 2007)

Ich würde für die Eingabefelder nen Validator einsetzen, z.b. http://commons.apache.org/validator/


----------



## Mork (3. Sep 2007)

Super, ich danke euch, werds morgen gleich ausprobieren 

@byto

Ich hab Validatoren im Framework aber das bringt nix. Ich will Label drucken. In Klarschrift muss es die Möglichkeit geben, bestimmte Nummer in 12.12-1 usw auszudrücken. Für den zu generierenden Barcode brauche ich eine andere Repräsentation, eben ohne diese Zeichen und führende Nullen bis auf eine bestimmte Länge.

Da fallen bis auf den NotNull Validator alle durch. MaxLength, MinLength, ExactLength kann man alles nicht ohne vor und Nachteile einsetzen.


----------

