Avatar billede nielsen2002 Nybegynder
11. december 2006 - 09:59 Der er 4 kommentarer og
2 løsninger

Slet bogstaver

Hej Eksperten

Jeg arbejder med er varedatabase som gør brug af et vareID som er en kombination af bogstaver og tal, syntaxen er altid, XXX23, altså altid bogstaver først og så tal.

Jeg vil så gerne lave en lille funktion som fjerner bogstaverne, så jeg kun har tallet tilbage.

Funktionen skal bruges når varelageret opdateres, så den skal ikke være alt for tung at danse med.

Jeg har selv rodet med noget i stil med

Dim p As Integer = 0
Do While IsNumeric(IdToBeShortened) = False
  IdToBeShortened = IdToBeShortened.Substring(p,
                                IdToBeShortened.Length -1)
  p = p + 1
Loop
Avatar billede mikkel_strack Nybegynder
11. december 2006 - 12:06 #1
Regular Expression kan gøre det ret nemt.

Jeg kender ikke syntaksen i vb, men mon ikke du kan omskrive nedestående c#.

    protected string SubstractString(string vareid)
    {
        string regPattern = "^([a-zA-Z]+)(\\d+)$";
        Regex R = new Regex(regPattern);

        return R.Replace(vareid, "$2");

    }
Regularexpression deler vareid op og returnerer tallet i enden. Det er ligemeget hvor mange tal eller bogstaver der indgår.

Mikkel
Avatar billede mikkel_sommer Nybegynder
11. december 2006 - 12:10 #2
prøv med:

Dim str As String = "abdh234"
Dim strArray As Char() = str.ToCharArray()
Dim stringFinal As String = String.Empty

For Each s As String In strArray
    If IsNumeric(s) Then
      stringFinal = stringFinal & s
    End If
Next
Avatar billede nielsen2002 Nybegynder
11. december 2006 - 13:45 #3
Takker. Jeg ved endnu ikke hvilken løsning jeg vil bruge. så hvis i begge skriver er svar får i halvdelen hver.

Hvis en af jer måske også ved hvordan man let kan hive et filnavn ud fra en hel sti.

Altså hive "MN-butik" ud af en sti som denne. "C:\SSIS\XML_import\XML\MN-butik.XML"

Det må gerne være fleksibelt, da både filnavn og sti kan ændre sig.

Jeg er ikke så stiv i Regex :P
Avatar billede mikkel_sommer Nybegynder
11. december 2006 - 14:11 #4
Dim sti As String = "C:\SSIS\XML_import\XML\MN-butik.XML"
        Dim start As Int16 = sti.LastIndexOf("\") + 1
        Dim slut As Int16 = sti.IndexOf(".")
        Dim file As String = sti.Substring(start, slut - start)
Avatar billede mikkel_strack Nybegynder
11. december 2006 - 14:32 #5
Kan godt være det er lidt bøvlet hvis man skal skrive sin egne patterns i regular expression, men findes en masse på nettet som kan de mest almidelige ting. Og så er det rigtig velegnet hvis man fx. skal validere indholdet af en string.

Hvis fx. dit vare id bliver sendt rundt i url'en, så ku man jo tænke sig at den blev ændret til minside.aspx?vareid=374bdhvdet3r3n3b3

    protected string SubstractString(string vareid)
    {
        string regPattern = "^([a-zA-Z]+)(\\d+)$";
        Regex R = new Regex(regPattern);

        if(R.IsMatch(vareid))
        {
            return R.Replace(vareid, "$2");
        }

        return "-1";
    }

Nu tjekker funktionen om vareid ser ud som du forventet før den levere nummeret tilbage.

Tjek evt. http://regexlib.com/DisplayPatterns.aspx?cattabindex=3&categoryId=4 for masser af patterns
Avatar billede nielsen2002 Nybegynder
12. december 2006 - 16:05 #6
Jeg takker mange gange :)
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