Avatar billede repsak Nybegynder
05. november 2005 - 18:59 Der er 14 kommentarer og
1 løsning

finde et tal

Hej, jeg skal bruge en RegEx som matcher et tal.
således skal alle understående strenge matche 100

"100"
"100kg"
"100kg234"
"kg100kg"
"kg100kg234"
"100 345"
" 100"

sikkert en simpel opgave for en kender ;-)
Avatar billede nielle Nybegynder
05. november 2005 - 19:07 #1
Mønsteret:

100

- vil klare den opgave. :^)

Eller var der mere til opgaven end det?
Avatar billede nielle Nybegynder
05. november 2005 - 19:09 #2
F.eks. i PHP:

$tekst = "kg100kg234";
if (preg_match("/100/", $tekst)
{
    echo "Matcher";
}
else
{
    echo "Matcher ikke";
}
Avatar billede nielle Nybegynder
05. november 2005 - 19:17 #3
... eller hvis 100 ikke må indg¨som en del af et større tal, som f.eks.:

"kg1001kg234"

- så kunne løsningen se sådan her ud:

^100$|^100[^\d]|[^\d]100[^\d]|[^\d]100$
Avatar billede plx Nybegynder
05. november 2005 - 19:21 #4
Min fortolkning:

if(preg_match("/[\D]*(\d+)/", $tekst, $match)){
    echo $match[1];
}
Avatar billede plx Nybegynder
05. november 2005 - 19:24 #5
Første del er vel egentlig overflødig

if(preg_match("(\d+)/", $tekst, $match)){
    echo $match[1];
}
Avatar billede repsak Nybegynder
05. november 2005 - 20:18 #6
plx, korrekt fortolkning. 100 skal ses som en variabel integer.

hmm, min første indskydelse var også at bruge "\d*", men så får jeg at vide at "kg100kg" ikke matcher. Jeg ønsker at få tallet returneret - ikke at få at vide om "kg100kg" matcher. giver det mening? :)
Avatar billede nielle Nybegynder
05. november 2005 - 21:15 #7
if (preg_match("/(\d+)/", $tekst, $match))
{
    echo $match[0];
}
Avatar billede repsak Nybegynder
05. november 2005 - 21:19 #8
hmm, jeg bruger ikke php, men .NET :-/
Avatar billede erikjacobsen Ekspert
05. november 2005 - 21:21 #9
Avatar billede nielle Nybegynder
05. november 2005 - 21:23 #10
C# eller VB.NET?
Avatar billede nielle Nybegynder
05. november 2005 - 21:29 #11
I C#:

string tekst = "kg100kg234";

Regex regex = new Regex(@"(?<tallet>\d+)");
Match match = regex.Match(tekst);

if (match.Success)
{
    Console.WriteLine(match.Groups["tallet"].Value);
}
Avatar billede repsak Nybegynder
05. november 2005 - 21:42 #12
Super, det var lige det jeg skulle bruge. Smid et svar nielle
Avatar billede nielle Nybegynder
05. november 2005 - 21:49 #13
Jeg synes at plx og jeg skulle dele på denne her.

... og mit svar :^)

PS: Et råd; næste gang du spørger ville det altså være en god ide, hvis du tager alle de relevante oplysninger med fra starten. Mønsteret er godt nok "(\d+)" uanset programmeringssprog, men er der nu alligevel stor forskel på hvordan resten af koden ser ud derefter. ;^)
Avatar billede repsak Nybegynder
05. november 2005 - 21:57 #14
ja, men når spørgsmålet både indeholder .net og regexp så er det svært at vælge kategori. Og jeg synes at opgaven lød så simpel og så er det sværere at forklare det end man tror ;-)

plx, du kan også smide svar :)
Avatar billede nielle Nybegynder
09. november 2005 - 16:28 #15
Takker for point :^)
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
Kurser inden for grundlæggende programmering

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