# String auf zahlen prüfen (java 1.3)



## Oni (3. Dez 2005)

hey,

ich habe einen txt mit string's in dem format:

```
ABZZ..blA..usw.
AB01..F111..usw.
```

jetzt möchte ich heraus finden ob position 3 und 4 zahlen in dem string sind. wenn ja wird der string verarbeitet.

wie mache ich das am besten? im moment nehme ich einen substring und parse dann in einen int. wenn das funktionier waren es zahlen ansonsten nicht.

in etwa so:

```
String str = "AB01..F111";
testStr = str.substring(2,4);
try{
int ergebnis = Integer.parseInt(testStr);

// wenn es geht mach das
}catch(NumberFormatException e){
// ansonsten mach das...
}
```
das ist eine sehr unsauber lösung, oder? gibt es da eine bessere?

muss unter java 1.3 laufen...


----------



## Bastian (3. Dez 2005)

1.3 hmm, fällt mir jetzt im mom auch nicht groß anderes ein, kannst ja noch ne eigene methode schreiben, dann siehts schöner aus:


```
public boolean isInteger(String s)
    {
         try
         {
             Integer.parseInt(s);
             return true;
         }
         catch(NumberFormatException e)
         {
             return false;
         }
    }
```

ab 1.4 kannste des auch mit String.matches und regex machen


----------



## messi (3. Dez 2005)

```
private static boolean hatZahlen(String s) {
    if (s == null || s.length() < 4)
        return false;
    char c = s.charAt(2);
    if (c < '0' || c > '9')
        return false;
    c = s.charAt(3);
    if (c < '0' || c > '9')
        return false;
    return true;
}
```


----------



## The_S (3. Dez 2005)

Hol dir das char und überprüf mit


```
Character.isDigit(char ch);
```

sollte auch schon mit java 1.3 gehen.


----------



## SlaterB (3. Dez 2005)

was soll da unsauber sein? wenn du nur einen bestimmten Abschnitt des Strings meinst dann musst du das ja wohl eingrenzen, und viel anderes als Integer.parseInt gibts nicht

falls es dir auf Schnelligkeit ankommt kannst du auf das subString und die Zahlbestimmung verzichten
und dich auf den Kern, die Prüfung, beschränken

ziemlich schnell dürfte sowas hier sein

```
public static boolean istZiffer(char c) {
		return (c > 47) && (c < 58);
	}

	public static boolean enthaeltZiffernVonBis(String st, int start, int end) {
		for (int i=start; i<end; i++) {
			if (!istZiffer(st.charAt(i))) {
				return false;
			}
		}
		return true;
	}
```

falls die Zahlen auch Punkte/ Leerzeichen/ Minuszeichen enthalten dürfen wäre wohl eine komplexere Operation nötig 
(insbesondere wenn du auf Korrektheit prüfen willst um etwa -4.-6 zu verhindern)


----------

