Avatar billede dennisbjorn Juniormester
30. april 2009 - 15:24 Der er 7 kommentarer og
1 løsning

Streng manipulation ASP

Findes der en funktion, hvor man får returneret første del af en streng (varchar)?

Eks.
25 Finance and administration

Jeg vil kun have returneret "25".
Hvis man bruger RIGHT ( '25 Finance and administration ', 2) så få man jo de første to tegn, men problemet er, at tallet kan variere fra 1 - 3 ciffer.
Så vi skal altså se på tegn før det første mellemrum.

Ved at man i SQL kan bruge CHARINDEX men kan ikke få det til at virke i ASP
Avatar billede j3ppah Novice
30. april 2009 - 15:34 #1
Hvorfor så ikke bare tage 3, da det ene alligevel vil være et mellemrum hvis der kun er 2 ?
Avatar billede j3ppah Novice
30. april 2009 - 15:35 #2
Doh!... sorry havde ikke lige set det var 1-3
Avatar billede softspot Forsker
30. april 2009 - 15:36 #3
Det er godt nok LEFT der returnerer de første to tegn, men lad nu det ligge... :-)

Den hurtige løsning er at bruge split og så opdele ved mellemrum og aflæse det første element:

txt = "25 Finance and administration"
tallet = Split(txt, " ")(0)

Alternativt kan du bruge indeksering via instr og så udtage en del af strengen (f.eks. med left, men mid er også en mulighed):

txt = "25 Finance and administration"
spacepos = instr(txt, " ")
if spacepos > 0 then
  tallet = left(txt, spacepos - 1)
else
  tallet = txt
end if

Endnu en mulighed er regulære udtryk, men i dette tilfælde vil jeg mene du har hvad du skal bruge...
Avatar billede softspot Forsker
30. april 2009 - 15:40 #4
Med split-udgaven bør man nok lige lave et check på om ubound på det array som split returnerer et større end -1 inden den aflæses, ellers risikerer man en "index out of bounds" kørselsfejl.

txt = "25 Finance and administration"
arr = Split(txt, " ")
if ubound(arr) > -1 then
  tallet = arr(0)
else
  tallet = txt
end if
Avatar billede claes57 Ekspert
30. april 2009 - 15:42 #5
hvis du bruger
"RIGHT ( '25 Finance and administration ', 2)"
så får du altså "on"
ellers er det left...
men du kan lave en lille funktion, der søger på første mellemrum, og tager alt ind til da.
Kald den med:
Konto = GetNum("25 Finance and administration")
 

function GetNum(txtstr)
  dim pos
  pos = instr(txtstr," ")
  if pos > 0 then
    GetNum = left(txtstr,pos-1)
  else
    GetNum = "0"
  end if
end function
Avatar billede claes57 Ekspert
30. april 2009 - 15:44 #6
Jeg kan se, at jeg ikke må tale i telefon samtidig - så kommer jeg sidst med svar...
Avatar billede dennisbjorn Juniormester
30. april 2009 - 19:32 #7
Kanon - tak for hjælpen :-)

Softspot kom først - så smid et svar

(Og ja - jeg fik skrevet right istedet for left)
Avatar billede softspot Forsker
30. april 2009 - 20:04 #8
Velbekomme :-)
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