Gå til innhold

Kode for sjekk av telefonnummer


Anbefalte innlegg

Skrevet

Hai!

Jeg trenger en kode for å sjekke at et telefonnummer kun inneholder tall og ikke tegn eller bokstaver.

Ønsker å gjøre dette med en bool-funksjon (true eller false).

Noen som har et tips eller to..?

På forehand takk.

Videoannonse
Annonse
Skrevet

Det finnes jo en del slike is[tegntype]() funksjoner som du kan sjekke ut. Eller så kan du i "verstefall" lage deg din egen lille is[et eller annet]() funksjon. Bruke en enum til å ramse opp de du vil/ikke vil ha med?

Skrevet (endret)

Ganske fersk selv, men tror dette skulle funke...

bool isInt(std::string str)
{
unsigned int i;
for(i=0;i<str.length();i++) {
 if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) return false;
}
return true;
}

Endret av Nazgul
Skrevet (endret)
Ganske fersk selv, men tror dette skulle funke...

bool isInt(std::string str)
{
unsigned int i;
for(i=0;i<str.length();i++) {
 if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) return false;
}
return true;
}

Den vil alltid returnere true.

 

bool isInt(std::string str)
{
bool temp = true;
for(int i=0;i<str.length();i++) {
if(((int)str[i] < 0x30) || ((int)str[i] > 0x39))
        temp = false;
}
return temp;
}

 

Noe sånt...har ikke testet den if`en der...

Endret av lodott
Skrevet (endret)
Ganske fersk selv, men tror dette skulle funke...

bool isInt(std::string str)
{
unsigned int i;
for(i=0;i<str.length();i++) {
 if(((int)str[i] < 0x30) || ((int)str[i] > 0x39)) return false;
}
return true;
}

Den vil alltid returnere true.

 

bool isInt(std::string str)
{
bool temp = true;
for(int i=0;i<str.length();i++) {
if(((int)str[i] < 0x30) || ((int)str[i] > 0x39))
        temp = false;
}
return temp;
}

 

Noe sånt...har ikke testet den if`en der...

gratulerer lodott!

du pastet AKKURAT den samme versjonen bare at du gjorde den treigere!

jeg mener, hvorfor skal man returnere hvis man finner noe som ikke er et tall? bedre å loope gjennom resten av stringen bare for å bruke litt ekstra tid, i hvertfall når du får med en ekstra temp variabel på kjøpet også, syns du ikke lodott?

 

dermed overrekker jeg deg "det er bedre å holde kjeft å la folk tro du er dum enn å åpne kjeften og fjerne alle tvil"-prisen.

Endret av iobas
Skrevet
dermed overrekker jeg deg "det er bedre å holde kjeft å la folk tro du er dum enn å åpne kjeften og fjerne alle tvil"-prisen.

Hehehe beklager så mye. Den fortjente jeg! :D

Jeg blingset og fikk ikke med meg at han hadde skrevet "return false" midt i der. :blush:

Skrevet (endret)

Det er også unødvendig med all castingen til int:

bool is_digits(const std::string & str)
{
   std::string::const_pointer p = str.c_str();
   while(0 != *p)
   {
       if(*p < 0x30 || *p > 0x39)
           return false;
       ++p;
   }

   return true;
}

// eller med locales..

bool is_digits(const std::string & str, const std::locale & loc)
{
   std::string::const_pointer p = str.c_str();
   while(0 != *p)
   {
       if(!std::isdigit(*p++, loc))
           return false;
   }

   return true;
}

Endret av kjetil7
Skrevet

Vet ikke i hvilken sammenheng dette skal brukes, men det kan eventuellt være en idé å ta hensyn til om brukeren taster inn mellomrom i telefonnummeret. (400 4848 3 :])

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...