Avatar billede morten_soegaard Nybegynder
27. april 2005 - 19:37 Der er 19 kommentarer og
2 løsninger

Splitte en tekst

Hej

Et simpelt spørgsmål, hvordan splitter jeg et ord som består af følgende udtræk rs("bruger")

rs("bruger") = 2morten

Det skal jeg gerne vil have ud af udtrækket er: morten

Men man kunne også godt forestille sig der kunne have stået:
12morten. Så det er ikke altid tast nummer to.

Hvordan går jeg det?
Avatar billede busschou Praktikant
27. april 2005 - 19:39 #1
Hvis du ikke ved om der står "1morten" eller "12morten" eller for den sags skyld "123morten" .
Hvordan skal programmet så kunne skældne?
Den eneste løsning jeg ser er hvis det konsekvent er de første tal du vil have væk. Og det altid er tal?
Så kan du bruge regulære udtryk
Avatar billede baitianlong Nybegynder
27. april 2005 - 19:53 #2
Set RegularExpressionObject = New RegExp

With RegularExpressionObject
.Pattern = "\d*"
End With

Rs("bruger") = RegularExpressionObject.Replace(rs("bruger"), "")
Set RegularExpressionObject = nothing

Prøv med det der :)
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 19:53 #3
Det er ALTID tal. Men som sagt om der står 1morten 100203morten vides ikke.

Så vil du simpelthen lave en regexp på det?
Avatar billede baitianlong Nybegynder
27. april 2005 - 19:55 #4
den skulle gerne fjerne alle tal (1 gang) ... Hvis brugeren hedder "morten47" og strengen derfor hedder:

10234morten47

vil den fjerne 47. (tror jeg)
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 20:00 #5
Kan ikke få det til at virke...
Koden ser således ud:


        Set rs_bruger = my_conn.Execute("SELECT * FROM budbruger WHERE id = " & Request.QueryString("id"))
        Set RegularExpressionObject = New RegExp

        With RegularExpressionObject
        .Pattern = "\d*"
        End With

        Rs_ret("bruger") = RegularExpressionObject.Replace(rs_bruger("brugernavn"), "")       
        Set RegularExpressionObject = nothing

        Response.Write "<form method='post' action='indstillinger.asp?action=rediger&id=" & Request.QueryString("id") & "&aendre=1'><table width='200' border='1' cellspacing='1'>"
          Response.Write "<tr>"
        Response.Write "<td>Fornavn:</td>"
        Response.Write "<td><input name='fornavn' type='text' value='" & Rs_ret("bruger") & "'></td>"
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:01 #6
Nu kan jeg godt nok ikke RegExp, så her er noget almindeligt kode:

navn = "123morten47" ' test streng
for i = 1 to len(navn)
  if IsNumeric(mid(navn, i, 1)) = false then
    navn = mid(navn, i)
    exit for
  end if
next

response.write navn ' udskriver: morten47
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 20:01 #7
Tallene skal ikke fjernes når man indsætter det i databasen, men kun når den bliver trukket ud.
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:03 #8
Prøv det her:
dim navn

      navn = RegularExpressionObject.Replace(rs_bruger("brugernavn"), "") 

...

        Response.Write "<td><input name='fornavn' type='text' value='" & navn & "'></td>"
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 20:03 #9
Jamen thesurfer det virker jo...

Men er det mindre "usikkert" ikke at bruge regexp til dette?
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 20:05 #10
Nu virker metoden også med regexp... Hvis i begge ligger et svar, så får i begge point. Men regner med jeg bruger regexp, da jeg egentlig skal bruge en del regexp på sitet.
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:05 #11
Nej, det er ikke "mindre" usikkert.. begge metoder virker..

Du kan også tilføje dette, efter "next":

if IsNumeric(navn) = true then
' navnet består KUN af tal..
' dvs, test strengen kunne have været: "12345"
' så vil navnet være "12345"..
end if

En slags sikring mod "nullængde"..
Avatar billede baitianlong Nybegynder
27. april 2005 - 20:08 #12
Det var min tanke, det samme:

Har du defineret det array Rs_ret ? Og bruger du det som array. Ellers:

Rs_ret = RegularExpressionObject.Replace(rs_bruger("brugernavn"), "")
...
Response.Write("<td><input name=""fornavn"" type=""text"" value=""" & Rs_ret & """></td>")
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:08 #13
hmm.. "Men er det mindre "usikkert" ikke at bruge regexp til dette?"..

Dvs: Er det mere sikkert at bruge regexp?

Resultet vil være det samme, når man har rettet det med "tal-bogstaver-tal" kombination/koden i regexp.

Koden fra 27/04-2005 20:01:15 accepterer f.eks. "morten47". Som legende.dk skriver i 27/04-2005 19:53:32, tror jeg at RegExp vil fjerne "47" i "morten47"..
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:10 #14
Jeg tror at "Rs_ret" er recordset'et, til den SQL der retter koden..
Avatar billede baitianlong Nybegynder
27. april 2005 - 20:10 #15
gør den det ?

fjerner den 47 fra morten47 ?
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:13 #16
legende.dk> Jeg har lige lavet en test.. den fjerner ikke 47 fra morten47.
Avatar billede baitianlong Nybegynder
27. april 2005 - 20:14 #17
så er den jo smuk ?
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 20:33 #18
Det gør det nemlig ik nej... Så det er bare perfekt! Tak for hjælpen.
Avatar billede thesurfer Nybegynder
27. april 2005 - 20:37 #19
Du skal lige markere navn i boksen til venstre, inden du klikker på Accepter-knappen..
Avatar billede morten_soegaard Nybegynder
27. april 2005 - 21:18 #20
Ja det ved jeg, men du har jo ikke lagt et svar endnu
Avatar billede thesurfer Nybegynder
27. april 2005 - 21:23 #21
Så lægger jeg da bare et svar :-)
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