DecimalFormat überprüfen

Status
Nicht offen für weitere Antworten.
J

Jan_HH

Gast
Hallo,

gibt es eine einfache Möglichkeit, zu überprüfen, ob ein String dem Pattern eines DecimalFormat entspricht? Also ich habe beispielsweise ein DecimalFormat für Geldbeträge, mit bis zu drei Stellen vor dem Komma und exakt zwei nach dem Komma, das Pattern wäre also "##0,00". Nun würde ich gerne überprüfen, ob Strings, die der User eingibt, diesem Pattern entsprechen.

Es handelt sich ja beim DecimalFormat-Pattern scheinbar NICHT um ein regular expression-Pattern, so dass die Pattern/Matcher-Sache, die es dafür ja gibt, in diesem Fall nicht funktionieren dürfte. Die Funktionalität per Hand zu programmieren kommt mir ein wenig komplex vor. Gibt es da eine einfache Methode für?

Gruß+Danke
Jan
 
S

SlaterB

Gast
das Pattern einsetzen, also parsen?!
bei einer Exception hats nicht gepasst
 
S

SlaterB

Gast
deine Antwort nicht verstehe,

bzw. ich möchte nicht mein komplettes langes Posting neuformuliert wiederholen,
beschreibe bitte WAS du nicht verstehst (Wörter, Satzbau, Zusammenhang, ..) in langen Sätzen ;)
 

Ebenius

Top Contributor
@SlaterB: Er hat nicht kapiert, wie er's testen soll.

@Jan_HH: Slater meint in etwa das:
Code:
/**
 * Checks whether the given text can be parsed by the given format.
 * 
 * @param format the format to parse the input string with
 * @param input the input string to be parsed
 * @return <code>true</code> if the given input string can be parsed by the
 *         given format
 */
public static boolean isParsable(Format format, String input) {
  try {
    format.parseObject(input);

    return true;
  } catch (ParseException ex) {
    return false;
  }
}

Benutzen kannst Du die Methode in etwa so:
Code:
if (isParsable(DecimalFormat.getCurrencyInstance(), "100,00\u20AC")) {
  System.out.println("You are a European");
} else if (isParsable(DecimalFormat.getCurrencyInstance(), "$100.00")) {
  System.out.println("You are an American");
} else {
  System.out.println("You are an Alien");
}

Gruß, Ebenius
 
J

Jan_HH

Gast
Vielen Dank. Dass man mit dem Format auch Strings parsen (und damit dann auch überprüfen kann) war mir einfach nicht bekannt. Die erste Antwort war einfach zu kurz, es ging daraus für mich nicht klar hervor.
 
J

Jan_HH

Gast
Funktioniert allerings nicht. Das parsen akzeptiert alles mögliche, was sich als Zahl interpretieren lässt, und keineswegs nur das, was dem Format entspricht. Wenn ich "0.00" als Format angebe, will ich, dass auch wirklich exakt zwei Nachkommastellen vorhanden sein müssen. Das kann ich damit nicht sicherstellen.

Meine Lösung (vorerst): Wenn der zu überprüfende String eine Zahl ist, diesen in eine Zahl konvertieren (double), und diese dann wieder mit dem DecimalFormat in einen String konvertieren. Wenn dieser dann identisch mit dem Ursprungs-String ist, ist alles ok. Dabei muss noch beachtet werden, dass man führende Nullen entfernen muss, und ggf. das Dezimaltrennzeichen im DecimalFormat anpassen muss (Komma statt Punkt), oder selbiges im zu parsenden String vor dem konvertieren muss (Punkt statt Komma). Mit dieser Methode erreiche ich einigermassen das, was ich will.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D DecimalFormat: entfernt falsches Komma Allgemeine Java-Themen 12
H2SO3- DecimalFormat Allgemeine Java-Themen 9
K DecimalFormat Frage Allgemeine Java-Themen 2
W DecimalFormat ohne Tausendertrenner Allgemeine Java-Themen 2
T Decimalformat, Fehler beim runden? Allgemeine Java-Themen 8
S Decimalformat gibt falsche Werte aus Allgemeine Java-Themen 3
J DecimalFormat vertauscht . und , Allgemeine Java-Themen 8
J DecimalFormat Allgemeine Java-Themen 4
L java.text.NumberFormat und java.text.DecimalFormat benutzen Allgemeine Java-Themen 2
N Zahl mit DecimalFormat formattieren Allgemeine Java-Themen 2
D problem mit decimalformat Allgemeine Java-Themen 5
T Best Practice überprüfen von Übergabeparametern Allgemeine Java-Themen 17
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
E Variablen Aus .txt ausgelesener string mit if() überprüfen? Allgemeine Java-Themen 2
H Wie kann ich überprüfen ob das Feld noch frei ist? Allgemeine Java-Themen 5
C Email Versand überprüfen Allgemeine Java-Themen 1
F Vier gewinnt Diagonal überprüfen Allgemeine Java-Themen 2
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
B Datei überprüfen, ob diese Freigeben ist oder fertig geschrieben wurde Allgemeine Java-Themen 3
T String auf Inhalt bzw. Schema überprüfen Allgemeine Java-Themen 12
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
S Ziffern auf Existenz überprüfen Allgemeine Java-Themen 13
K Threads Thread überprüfen Allgemeine Java-Themen 3
R ThreadPool - vorhandene thread liste überprüfen bzw. aufräumen Allgemeine Java-Themen 3
H Doublewert auf korrektheit überprüfen Allgemeine Java-Themen 18
C String überprüfen Allgemeine Java-Themen 2
T Methodenparameter zur Compile-Zeit überprüfen Allgemeine Java-Themen 8
K Vollständiges Schreiben überprüfen Allgemeine Java-Themen 4
X Java Schachzüge überprüfen Allgemeine Java-Themen 7
C Array überprüfen Allgemeine Java-Themen 8
J String auf E-Mail überprüfen Allgemeine Java-Themen 4
G überprüfen ob string unteranderem ein regex enthalten Allgemeine Java-Themen 7
D Kommazahl auf Richtigkeit überprüfen Allgemeine Java-Themen 3
C Reflection Übergabeparamter überprüfen? Allgemeine Java-Themen 3
X XML- Datei überprüfen Allgemeine Java-Themen 2
S String auf ASCII Kodierung überprüfen? Allgemeine Java-Themen 4
T String auf Kommazahl überprüfen Allgemeine Java-Themen 4
P Verbindung überprüfen Allgemeine Java-Themen 5
I Zeile überprüfen Allgemeine Java-Themen 12
J Chars auf Gleichheit mit Klamern/Operatoren überprüfen Allgemeine Java-Themen 3
N Ausgaben (System.out) umlenken und in Unit-Tests überprüfen? Allgemeine Java-Themen 2
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
P Wie überprüfen ob es sich Hexadezimalzahl handelt? Allgemeine Java-Themen 2
S Klasse einer Methode übergeben und überprüfen Allgemeine Java-Themen 7
M String auf Zeichen überprüfen Allgemeine Java-Themen 5
N String überprüfen ob nur Ziffern enthalten sind!! Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben