[Java] Zahl in einem String erkennen

m3x

Ensign
Registriert
Aug. 2005
Beiträge
218
Hab nen Programm das aus einer Liste die in einer Textdatei steht statische Variablen macht.. nur manche Variablen beginnen halt mit Zahlen, das sowas nicht geht ist ja klar ;)... nur wie kann ich erfassen ob die variable (bzw noch ein String beim einlesen) mit einer Zahl beginnt?

Thanks, m3x
 
[LÖSUNG] [Java] Zahl in einem String erkennen

Naja nicht gerade toll.. falls noch jemand eine Bessere Lösung hat gerne her damit ^^

Code:
try{
   String tmp = line.substring(0, 1);     // Abtrenen des ersten Zeichens aus der Zeile (line)
   int temp = Integer.parseInt(tmp);      // Versuchen das Zeichen zu parsen
   line = "_"+line;                       // Wenn erfolgreich wird ein Unterstrich vor den Namen gesetzt
}                                         // damit dieser gueltig ist
catch(NumberFormatException numFormExc){  // Wenn ne exception kommt faengt der name 
}                                         // nicht mit einer Zahl an, daher nichts machen.
 
Du könntest was von der folgenden Art machen:
Code:
String var = "1Hallo";
    int intVar = Integer.valueOf(var.substring(0,0));
Wird dir eine NumberFormatException geschmissen, ist es keine Zahl.

Im catch Block kannst du dann einen boolean setzen, z.B. isNumber = false;

Dann ausserhalb nach dem try-catch-Gefüge isNumber auswerten
 
Cobinja schrieb:
Du könntest was von der folgenden Art machen:
Code:
String var = "1Hallo";
    int intVar = Integer.valueOf(var.substring(0,0));
Wird dir eine NumberFormatException geschmissen, ist es keine Zahl.

Im catch Block kannst du dann einen boolean setzen, z.B. isNumber = false;

Dann ausserhalb nach dem try-catch-Gefüge isNumber auswerten

EDIT: Da waren wir wohl zeitgleich. Ist aber in meinen Augen die beste Möglichkeit.
 
Die guten alten regulären Ausdrücke (regular expressions) 1 - 2 - 3
 
Stimmt, ist auch 'ne Möglichkeit. Ist auch eleganter, da man nicht mit einer NumberFormatException rumhantieren muss
 
@ Cobinja.. jopp.. bissl sauberer
 
Ich hab leider die Angewohnheit, mich nach Möglichkeit vor RegExes zu drücken...
 
Die sind schon a bissl hart, aber auch sehr mächtig und für dynamische Vergleiche praktisch nicht zu ersetzen.
 
RegEx sind das einfachste und beste um Zeichenketten zu validieren.

^-?[1-9][0-9]*$

Das wäre aus dem Stehgreif ein pattern um Integer-Zahlen zu matchen. Hier noch eins für Kommazahlen

^-?[1-9][0-9]*\.?[0-9]*$
 
Nein - Reguläre Ausdrücke sind nicht "hart". Sie sind einfach und logisch aufgrbaut. Klar man kann auch mit Regulären Ausdrücken extrem hässliche Ausdrücke basteln, aber man kann auch extrem hässliche Java-Programme schreiben ;)

Ich versteh deine Abneigung nicht. Was soll denn bei deinem Beispiel rauskommen wenn du es auf einem bestimmten String ausführst?
 
Logisch sind reguläre Ausdrücke logisch,aber Logik ansich ist ja bereits für die meissten Menschen nicht mehr so logisch => Logik ist zwar logisch aber für die meissten Menschen hart.

=> Logisch => Hart

RegEx logisch = > hart

:D

Und hässlich sind sie auch noch...
 
Zurück
Oben