Entwickler-Ecke

C# - Die Sprache - Wertebereiche abfragen


Seppe - Mo 08.09.08 13:42
Titel: Wertebereiche abfragen
Hallo,

ich versuch gerade meine Delphi-Komponenten in c# umzusetzen und komme in einer Sache nicht weiter.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
const
Numeric_Codes   = [('0')..('9'),('-')];

...
if (charcode in Numeric_Codes) then
....


Gibt es in c# ein ähnliches Konstrukt für solche IF-Abfragen ?

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


Christian S. - Mo 08.09.08 13:54

Hallo!

Nein, sowas gibt's leider nicht. Da muss man dann schon Oxygene benutzen, das hat sowas :-)

Du kannst es aber (wahrscheinlich bei weitem nicht so performant) mit einem regulären Ausdruck lösen:

C#-Quelltext
1:
if (Regex.Match(@"[0-9\-]", charcode))                    


Oder evtl. so:

C#-Quelltext
1:
 if((charcode >= '0' && charcode <= '9') || charcode == '-'))                    


Grüße
Christian


//edit: Ich wusste doch, dass ich die Frage auch mal gestellt habe. Hier gibt's noch mehr Antworten: http://www.c-sharp-forum.de/viewtopic.php?t=48638&start=0&postorder=asc


Skiller-1988 - Mo 08.09.08 14:01

Ich weis zwar nicht ob es dir weiterhilft aber ich habe das mal ganz einfach ausprobiert mit einer foreach-schleife.
Ich kann mir schon denken das hinsichtlich der Performance nicht die beste Lösung sein wird , aber es funktioniert soweit.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            char[] Numeric= new char[] {'0','1','2','3','4','5','6','7','8','9',};
            bool res =false;
            string eingabe= Console.ReadLine();
            foreach(char c in Numeric)
            {
                if (eingabe.Contains(c))
                    res = true;
            }
            Console.WriteLine(res.ToString());


Seppe - Mo 08.09.08 19:32

Danke für die Bemühungen.

Ich habs mit

if (fNumericChars.IndexOf(KeyChar) >= 0)

gelöst.

Noch ne Frage: In welchem Namespace sind die Virtual Keycodes definiert?


Kha - Mo 08.09.08 19:58


C#-Quelltext
1:
enum System.Windows.Forms.Keys                    

Macht aber normalerweise nur zusammen mit KeyUp/Down Sinn.
Außerdem solltest du der Übersichtlichkeit zuliebe einen neuen Thread (in der passenden Sparte) aufmachen, wenn du weitere Fragen hast, die nicht mehr zum Originalthema gehören.