Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, alle zusammen habe ein kleines Problem mit einem regulären Ausdruck.

Habe zwei jTextFields aus denen ich Werte auslese (es sollen nur Zahlen ausgelesen werden).

Zur Überprüfung ob die Eingaben auch korrekt in den jTextFields gemacht wurden wollte ich mit regulären Ausdrücken arbeiten.

Beispeil:

1.jTextField = man gibt den Preis für ein kwH ein

2.jTextField = man gibt an wieviel kwh erzeugt wurde.

- es sollten also keine Buchstaben drin vorkommen und jeweils nur ein punkt in jedem jTextField vorkommen, da ich mich Double Werten arbeite.

Bin zur Zeit bei folgenden Ausdruck angekommen, der jedoch nicht ganz funktioniert:


Pattern p1 = Pattern.compile("[^a-zA-Z][0-9]+[.]?[0-9]+");

Matcher m_preis = p1.matcher(jTextField_preis.getText().toString());

boolean b_preis = m_preis.matches();

Geschrieben

Was heißt, es funktioniert nicht?

Du könntest ohne Regular Expression arbeiten, indem Du versuchst, die Eingabe als double zu parsen und bei einem Fehler entsprechend reagierst. Das sollte hier die schnellste Variante sein.

Peter

Geschrieben

Erstmal danke für deine Antwort, jedoch empfinde ich das als keine sinnvolle Alternative, da wenn ich den Text erstmal als String aus dem jTextField auslesen muss.

Wenn ich den sofort versuche in einen Double umzuwandeln ist ja noch alles ok...

Jedoch wenn der Benutzer dann mal einen Buchstaben eingibt, wird das Programm sofort mit einer Exception abbrechen...

Daher finde ich es micht regulären Ausdrücken eleganter..

Geschrieben

Ich kann nur raten, was Du mir sagen willst:

Du willst in Deinem JTextField auf jeden Tastenklick des Benutzers reagieren und sofortiges Feedback, ob die Eingabe syntaktisch korrekt ist. Beispiel:

"1" -> Prüfung(ok) -> "12" -> Prüfung(ok) -> "12." -> Prüfung(ok) -> "12.k" -> Prüfung(nicht ok)

Das kannst Du mit einer Regular Expression machen und genauso mit einer Umwandlung in ein double. Jedesmal, wenn Du mit der RegEx prüfen würdest, wandelst Du die Eingabe des Benutzers (natürlich die komplette) in ein double um. Wenn die Exception fliegt, hast Du den selben Effekt, wie wenn Dein Pattern nicht matcht. Du musst halt auf die Exception hören und sie fangen und entsprechend verarbeiten. Das hielt ich allerdings für selbstverständlich.

Peter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...