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.
GFU-Schulungen  [Anzeige]

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

ASP.NET Core und Angular Komplett für .NET-Entwickler

Sie  lernen in drei (3) Tagen wie man mit  ASP.NET Core und den Technologien  MVC, Entity Framework, WebAPI und  Razor professionelle sowie moderne  Web-Anwendungsarchitekturen aufbaut.  Die Schulung ist der perfekte  Einstieg um insbesondere datengetriebene  und präsentationsorientierte  Applikationen auf Basis der robusten und  skalierbaren ASP.NET Core  Plattform zu erstellen. Nach der Veranstaltung kennen Sie die Konzepte von Angular und können Angular in neue und bestehende ASP.NET-Anwendungen einsetzen.

        /// <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!