Feedback

C# - char.IsDigit

Veröffentlicht von am 19.01.2013
(4 Bewertungen)
Diese Erweiterungsmethode überprüft, ob es sich bei dem Zeichen um eine Zahl handelt.
Dabei werden nur die folgenden 10 Zeichen als Zahl erkannt: 0123456789. Unicodezeichen werden dabei nicht berücksichtigt.

Hinweis: Char.IsDigit erkennt auch viele Unicodezeichen als Zahl, die aber oftmals nicht als solche lesbar sind.
        /// <summary>
        /// Überprüft ob das Zeichen eine Zahl ist.<para/>
        /// Es werden lediglich die Ziffern 0 bis 9 berücksichtigt. Unicodezeichen werden im gegensatz zu char.IsDigit() ignoriert.
        /// </summary>
        /// <param name="c">Das zu überprüfende Zeichen.</param>
        /// <returns><c>True</c>, wenn es sich um eine Ziffer von 0 bis 9 handelt, andernfalls <c>False</c></returns>
        public static bool IsDigit(this char c)
        {
            return c > 47 && c < 58;
        }

4 Kommentare zum Snippet

hackman schrieb am 20.01.2013:
und welchen vorteil hat diese methode gegenüber der framework methode "bool Char.IsDigit(char c)"
Koopakiller schrieb am 20.01.2013:
Ganz einfach, die Arbeit, die Abfrage zu schreiben. Die Codelänge ist etwas kürzer:
char c = '5';
if(Char.IsDigit(c))
//...
if(c.IsDigit())
//...

Da ich in meinem Code viele solche Abfragen benötige, hat es sich in meinen Augen gelohnt, diese Methode zu schreiben, ist aber sicher Ansichtssache ;)

Aber vielleicht interessiert ja auch den einen oder anderen wie so etwas überhaupt geprüft wird ;)
hackman schrieb am 20.01.2013:
dann ist natürlich auch sehr gut dass du einen falschen weg zeigst, wie dies überprüft wird. spezielle unicode zeichen bleiben bei dir leider außen vor, nicht umsonst funktioniert die methode im framework noch etwas anders ...
Koopakiller schrieb am 05.01.2014:
Char.IsDigit Zeigt mehr Zeichen als Ziffer auf, als Meine Methode. Darunter beispielsweise u+0660, was diesem Zeichen entspricht: '٠'
Laut Internetbeschreibung handelt es sich um eien Zahl. Wenn ich aber versuche es in ein double zu parsen, dann bekomme ich eine FormatException geworfen.
Meine Methode überprüft wirklich nur die 10 Zeichen, die man typischerweise im Deutschen verwendet.
Char.IsDigit geht nach internationalen Standarts vor, was ja auch ok ist, aber teilweise kann man damit eben nicht prüfen ob man es problemlos in eine Zahl parsen kann.
PS: Nachdem ich das jetzt alles überprüft habe, ist das für mich der größte Vorteil meiner Methode.
Ich habe den Dokumentation entsprechend ergänzt.
 

Logge dich ein, um hier zu kommentieren!