Just nu i M3-nätverket
Jump to content

Kontrollera tal i variabel


A Persson

Recommended Posts

Någon som vet koden (perl) för att kolla att en variabel endast innehåller siffror, eller åtminstonde ett tal. Bokstäver och div. tecken som !#@ är inte välkommna!

 

Rätt:

$var = "123";

 

Fel:

$var = "abc";

 

Link to comment
Share on other sites

Är det inte något i stil med:

 

if $var =~ /[0-9]+/

 

(Får bara innehålla en eller flera siffror mellan 0 och 9)

 

Link to comment
Share on other sites

Är det inte något i stil med:

 

if $var =~ /[0-9]+/

 

Nästan, det behövs nog parenteser runt uttrycket och sen vill du gissningsvis testa om strängen bara innehåller 1-n siffror och inte bara om det finns en eller flera siffror i den, nåt i stil med:

if ($var =~ /^[0-9]+$/) {
 printf("Numerisk\n");
}

 

 

Link to comment
Share on other sites

Ojojoj!

Tack så jättemycket för både snabbt och bra svar! Blev förvånad över att jag fick hjälp så fort! Som lite nybörjare på perl som jag är så har jag bara en liten fråga till som jag kom på nu...

 

Vad är det för skillnad på att skriva...

 

printf("Numerisk\n");

 

...och...

 

print "Numerisk\n";

 

?

 

Link to comment
Share on other sites

Ja, det var väl en 7-8 år sedan jag programmerade Perl seriöst, men är det printf i samma mening som C-språkets så betyder det att man kan formatera strängar mha variabler typ:

 

printf ("Hej %s, Du har %d kronor på kontot", $strangen, $siffran);

 

Vilket med $strangen = "Erik" och $siffran = 1000 skulle visa:

"Hej Erik, Du har 1000 kr på kontot"

 

Det är väl samma sak som att skriva print "Hej $strangen, Du har $siffran kr på kontot" men finns nog för de som föredrar C-stuket.

 

 

 

Link to comment
Share on other sites

Tack så mycket för informationen!

Är kul att både lära sig och snacka med personer som "orkar" lära ut... Upptäckte en liten grej med koden som jag fick av fhe.

 

if ($var =~ /^[0-9]+$/)

 

Den funkar perfekt MEN den accepterar bara heltal. Om man vill slinka in med ett ,-tecken eller en punkt så funkar inte det. Finns det något sätt att lätt lägga till såna tecken som också ska accepteras?

 

Link to comment
Share on other sites

Den funkar perfekt MEN den accepterar bara heltal

Ja, uttrycket betyder. "Matchar allt som består av 1 eller flera siffror mellan start och slut på strängen".

 

Om man vill slinka in med ett ,-tecken eller en punkt så funkar inte det.

Vill du göra det måste du ha ett uttryck som tillåter det, följande betyder ungefär:

"en eller flera siffror som kan vara följt av 0 eller 1 , eller . och därefter 0 eller fler siffror":

if ($var =~ /^[0-9]+[.,]?[0-9]*$/) {

Det innebär förvisso att den även kommer att acceptera "10." men det kanske du kan leva med för att slippa ett allt för komplicerat regulärt uttryck :-)

 

 

Link to comment
Share on other sites

Hehe! "10." Funkar bra för mig. :-)

Vad jag förstår så accepteras nu alltså bara tecken som:

 

1 2 3 4 5 6 7 8 9 0 , .

 

Även "...", men det är väl smällar man får ta! ;-)

 

Är mycket tacksam för all hjälp som jag fått från dig/er!

Nu ska det nog funka som jag vill!

 

Link to comment
Share on other sites

Även "...", men det är väl smällar man får ta! ;-)

 

Nä...det ska den inte göra.

fhe's uttryck säger:

strängen startar - en eller flera siffror - noll eller en punkt eller komma - noll eller flera siffror - strängen slut

 

 

==Coleburn==

 

--------------------

"It takes a lot of knowledge to

really mess something up!"

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...