Avatar billede dollas Nybegynder
15. juli 2004 - 17:14 Der er 12 kommentarer og
1 løsning

kan det ikke gøres bedre?

bool fejl = false;
        foreach( char ch in readname )
        {
            if( Char.IsLetter(ch) )
                {fejl = true;}
            if( Char.IsPunctuation(ch) )
                {fejl = true;}
            if( Char.IsWhiteSpace(ch) )
                {fejl = true;}   

   
       
        }








Min readname skal kun kunne være tal...

Er der en smartere måde at gøre det på
Avatar billede arne_v Ekspert
15. juli 2004 - 17:17 #1
bool fejl = false;
        foreach( char ch in readname )
        {
            if( !Char.IsDigit(ch) )
            {
                fejl = true;
                break;
            }
        }

synes jeg er kønnere
Avatar billede arne_v Ekspert
15. juli 2004 - 17:18 #2
Du kan også teste det med regular expression, men det synes jeg så ikke er smart.
Avatar billede dollas Nybegynder
15. juli 2004 - 17:19 #3
Ja, selvføgeligt... Jeg vender den jo bare om... Hva fanden tænker jeg på
Avatar billede arne_v Ekspert
15. juli 2004 - 17:19 #4
Eller du kan kalde int.Parse og catche exception, men det synes jeg heller ikke
er smart.
Avatar billede arne_v Ekspert
15. juli 2004 - 17:20 #5
Ja og et break for at afslutte løkken ved første ikke tal fordi der ikke
er nogen grund til at teste resten.
Avatar billede arne_v Ekspert
15. juli 2004 - 17:20 #6
OK at jeg ligger svar nu ?
Avatar billede dollas Nybegynder
15. juli 2004 - 17:26 #7
Super svar...

Du får lige point. Men jeg ville blvie max glad hvis du lige kan forklare mig hvordan man laver en try ligesom man kan i vb.net...

Men du får lige point
Avatar billede arne_v Ekspert
15. juli 2004 - 18:01 #8
public static bool IsDigit(string s)
    {
        try
        {
            int tmp = int.Parse(s);
            return true;
        }
        catch(FormatException)
        {
            return false;
        }
    }
Avatar billede dollas Nybegynder
15. juli 2004 - 18:02 #9
Du har ikke lige mulighed for at skære den der ud i pap?
f.eks hvis jeg gerne vil skrive exceptionen ud???
Avatar billede arne_v Ekspert
15. juli 2004 - 18:07 #10
using System;

class MainClass
{
    public static bool IsDigit(string s)
    {
        try
        {
            int tmp = int.Parse(s);
            return true;
        }
        catch(FormatException ex)
        {
            Console.WriteLine(s + " => " + ex);
            return false;
        }
    }
    public static void Main(string[] args)
    {
        Console.WriteLine(IsDigit("123"));
        Console.WriteLine(IsDigit("ABC"));
    }
}
Avatar billede yaief Nybegynder
15. juli 2004 - 23:14 #11
Fra http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt16ClassParseTopic3.asp

The s parameter contains a number of the form:

[ws][sign]digits[ws]

Items in square brackets ([ and ]) are optional; and other items are as follows.

ws
    An optional white space.
sign
    An optional sign.
digits
    A sequence of digits ranging from 0 to 9.

Oversat betyder det jo, at hvis whitespace ikke er tilladt, så holder Int.Parse vist ikke?

Desuden er poiten med exceptions jo blandt andet at man kaster noget mere intelligent end fejl=true
Avatar billede arne_v Ekspert
16. juli 2004 - 18:31 #12
Du har ret i at Parse accepterer leading og trailing spaces, så hvis det er
et problem duer Parse ikke.

Med hensyn til inteligens så kan du jo vurdere hvad "men det synes jeg heller ikke
er smart" betyder på dansk.
Avatar billede yaief Nybegynder
28. juli 2004 - 20:09 #13
arne< jeg må indrømme jeg ikke har nogen anelse om hvad du mener med det sidste du skrev?

Måske var jeg upræcis - jeg mente exceptions er væsentligt mere beskrivende end fejl=true og jo netop er til for en grund. Blandt at de giver mulighed for mere avanceret/intelligent fejlhåndtering. Det var ingen fornæmelse, hvis du troede det - blot at en exception er en mere "intelligent" enhed end en boolsk værdi.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester