hakkejimmy Geschrieben 19. März 2010 Geschrieben 19. März 2010 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(); Zitieren
kingofbrain Geschrieben 19. März 2010 Geschrieben 19. März 2010 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 Zitieren
hakkejimmy Geschrieben 19. März 2010 Autor Geschrieben 19. März 2010 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.. Zitieren
kingofbrain Geschrieben 19. März 2010 Geschrieben 19. März 2010 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 Zitieren
Empfohlene Beiträge
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.