Wie lässt sich ein String darauf hin überprüfen ob er eine Zahl wiedergibt?

Mit Hilfe von regulären Ausdrücken lassen sich Strings erkennen, die Zahlen wiedergeben oder enthalten.
Unter regulären Ausdrücken versteht man Strings, die ein spezielles Suchmuster vorgeben und in der Lage sind, andere Strings auf das Vorkommen des gesuchten Elementes hin zu überprüfen. Für die Arbeit mit regulären Ausdrücken existiert in der Klasse java.lang.String die Methode matches(), die auf dem zu durchsuchenden String aufgerufen wird und als Parameter den regulären Ausdruck übergeben bekommt.
Das Beispiel führt drei reguläre Ausdrücke an, die ganze Zahlen, Gleitkommazahlen oder aber beide identifizieren.
Im einfachsten Fall wird zur Identifikation einer Zahl einfach nach einer einstelligen Ziffer gesucht. Sie kann durch das Sonderzeichen \d entdeckt werden. Hierbei muss jedoch beachtet werden, dass der Backslash '\' durch einen vorangestellten weiteren Backslash maskiert wird, da er in regulären Ausdrücken noch eine Sonderfunktion besitzt. Dieser Ausdruck erkennt jedoch nur eine einzelne Ziffer und versagt bei mehrstelligen Zahlen. Um diese zu erkennen, muss ein '+' nachgestellt werden. Es bedeutet, dass der vorangehende Ausdruck mindestens einmal oder mehrfach vorkommt.
public class ZahlenErkennen {

    public static void main(String[] args) {
        String s = "";
        // Testet nur auf ganzzahlige Werte
        if (s.matches("\\d+"))
            System.out.println("ganze Zahl!");
        else
            System.out.println("keine ganze Zahl!");
        // Testet auf Dezimalzahlen
        if (s.matches("\\d+([.]{1}\\d+){1}"))
            System.out.println("Dezimalzahl!");
        else
            System.out.println("keine Dezimalzahl!");
        // Testet auf Dezimal- und ganze Zahlen
        if (s.matches("\\d+([.]{1}\\d+)?"))
            System.out.println("Dezimalzahl oder ganze Zahl!");
        else
            System.out.println("weder Dezimal- noch ganze Zahl!");
    }
}
Deutlich komplizierter wird es, wenn nach einer Gleitkommazahl gesucht wird. Ihr Charakteristikum besteht darin, dass sie als Dezimaltrennzeichen einen Punkt enthält, der jedoch weder am Anfang, noch am Schluss stehen darf. Dem Punkt müssen also noch eine bis mehrere Ziffern folgen. Auch mehrere Punkte im String müssen ausgeschlossen werden.
Im Zentrum der Regex findet sich der Teil-String [.]{1}. Er legt fest, dass ein Punkt genau einmal vorkommen muss. Er wird gefolgt von dem bereits bekannten Ausdruck \\d+. Beides ist geklammert und wird von {1} gefolgt. Punkt und nachfolgende Ziffern müssen also genau einmal erscheinen.
Vor der runden Klammer findet sich wiederum der Ausdruck zur Erkennung mehrerer Ziffern. Gesucht wird somit nach einer oder mehreren Ziffern, die zwingend von einer Kombination aus einem Punkt und einer oder mehreren nachfolgenden Ziffern gefolgt wird.
Um wahlweise auf eine Dezimalzahl oder eine ganze Zahl zu prüfen, muss dem Block mit dem Punkt lediglich mitgeteilt werden, dass er keinmal oder einmal vorkommen darf. Dies geschieht durch ein nachgestelltes Fragezeichen.
letzte Änderung an:
switch-case-Verzweigung