Pattern von Fließkommazahlen

Duckemai

Mitglied
Hallo,

kann mir jemand sagen, wie man einen Punkt . parsen kann?

Ich möchte eine Zahl daraufhin überprüfen, dass sie maximal 10 Zeichen lang ist,
aber auch einen Punkt beinhalten darf sowie ein Vorzeichen.
ZB: -505.95

Mein Pattern sieht so aus, aber es funktioniert nicht:
Pattern.matches("[[+-]?[0-9]&&[\\.]]{0,10}", String.valueOf(erg));

Vielen Dank
Duckemai
 
Hi.

Die [] Meta-Zeichen repräsentieren eine sogenannte Zeichenklasse - und egal was du dort hineinschreibst, die Zeichenklasse repräsentiert immer nur genau ein Zeichen. Deshalb muss man andere Metazeichen innerhalb einer Zeichenklasse auch nicht entwerten.

Für deinen Code heißt das, dass dein Muster mit Zeichenketten von 0 bis 10 Zeichen bestehend aus [, ], +, -, ?, 0-9, & oder . übereinstimmt.

Versuch's mal mit Gruppieren:
Code:
[-+]?([0-9]*[.])?[0-9]+
Ob der String insgesamt aber nun aus max. 10 Zeichen besteht, könntest mit einem zweiten reg. Ausdruck prüfen, aber nimm einfach die length() Methode.

Gruß
 
Eine Frage hätte ich allerdings noch.

Ich möchte gerne in einem String erkennen, ob er mit einer Zahl endet. ZB:

-5.5 = true (hier also die letzte 5)

Habe es so versucht, aber es klappt einfach nicht:

Pattern.matches("([0-9]+)$",ausgabe.getText().toString())

Was mache ich falsch?

Vielen Dank
Duckemai
 
Zuletzt bearbeitet:
Hi.

Der Anker $ ist bei der matches Methode überflüssig. Wenn du matches verwendest muss der gesamte String mit dem reg. Ausdruck übereinstimmen (das Muster ist also immer implizit in ^ $ eingefasst).

Code:
Pattern.matches(".*[0-9]",ausgabe.getText().toString())
Gruß
 
Zuletzt bearbeitet:
Zurück