Avatar billede millerbean Praktikant
16. november 2010 - 13:23 Der er 10 kommentarer og
1 løsning

Regular expression

Hej

Jeg har brug for et regulært udtryk som tjekker om de 4 første tegn i en tekstboks er cifre.

Feks.
2310K OK
231K ikke OK
K2310 ikke OK
2310 OK

Nogle bud?
Avatar billede aaberg Nybegynder
16. november 2010 - 13:36 #1
^\d\d\d*
Avatar billede j3ppah Novice
16. november 2010 - 13:38 #2
Du skal selvfølgelig lige selv skive lidt om i den for at tilpasse den dit kode. men det var da en ganske simpel måde at checke på det.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string abe = "1234Test";
            string abe2 = "T1234Est";
           
            try
            {
            int test = Convert.ToInt32(abe.Substring(0, 3));
            Console.WriteLine(abe);
            }
            catch (Exception e)
            {
                Console.WriteLine("Ugyldig");
                Console.WriteLine(abe);
            }

            try
            {
                int test = Convert.ToInt32(abe2.Substring(0, 3));
                Console.WriteLine(abe2);
            }
            catch (Exception e)
            {
                Console.WriteLine("Ugyldig");
            }

            Console.ReadLine();
           
        }
    }
}
Avatar billede aaberg Nybegynder
16. november 2010 - 13:46 #3
ikke brug try-catch til at tjekke om noget er numerisk. Det er langsomt, især første gang den ramme catch'en.

Hvis du vil prøve at konvertere de 3 første tegn som j3ppah foreslår, uden at bruge en regular expression, så gør sådan i stedet:

public bool CheckString(string input)
{
  int intVal;
  if (int.TryParse(input.SubString(0,3), out intVal))
  {
    return true;
  }
  else
  {
    return false;
  }
}
Avatar billede j3ppah Novice
16. november 2010 - 13:47 #4
Så slet ikke at det var en regular expression du havde brug for! min fejl!... Og ja, aaberg har ret... tryparse ville være hurtigere til formålet.
Avatar billede millerbean Praktikant
16. november 2010 - 13:54 #5
Fik den selv løst med "^\d\d\d\d
Avatar billede j3ppah Novice
16. november 2010 - 14:00 #6
Kan vi få den uddybet og måske få et udsnit af koden? Kan lige føle at der er noget jeg skal kigge på :)

Og for det andet burde aaberg at få points.
Avatar billede janus_007 Nybegynder
16. november 2010 - 14:34 #7
Nu må I da lige...

public bool CheckString(string input)
{
  int intVal;
  if (int.TryParse(input.SubString(0,3), out intVal))
  {
    return true;
  }
  else
  {
    return false;
  }
}

Skrives meget nemmere som
public bool CheckString(string input)
{
  int intVal;
  return int.TryParse(input.SubString(0,3), out intVal))
}

Og så er funktionen faktisk "væk", det er meget nemmere at skrive sådan her:
Func<string, bool> IsNumber = (x) => {int val; return int.TryParse(x.Substring(0,3), out val);};

Anyway.. det var bare en idé;

Derudover vil jeg da gerne lige nævne det med Exceptions... det tager meget længere tid end man lige forestiller sig :)
Avatar billede aaberg Nybegynder
16. november 2010 - 15:50 #8
janus_007: he he, der fik du mig!  :)
Avatar billede bkp Nybegynder
16. november 2010 - 16:21 #9
Ja Resharper er guld værd :-)
Avatar billede janus_007 Nybegynder
16. november 2010 - 19:26 #10
Jeg må være ærlig og sige, Resharper siger mig intet. Jeg havde engang installeret det, men hold da fast en masse sniksnak jeg konstant skulle tage stilling til, det tog alt for lang tid.
Avatar billede bkp Nybegynder
16. november 2010 - 21:38 #11
Ja sådan havde jeg det også i starten, men nu kan jeg ikke undværre den, dens refactoring tools er rigtig gode, men det er selvfølgelig en smagssag
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