Avatar billede qurzyx Nybegynder
30. september 2003 - 11:01 Der er 9 kommentarer og
1 løsning

En simpel opdeling af en af variabel

Hey, hva så!

Jeg har en en variabel "TestVar", som indeholder strengen: 24(2),25(2),26(100),30(1)

Denne streng kan dog godt svinge i længden og tal ,altså:
24(2),25(2),26(100),30(1),22(1000),423(1)
osv. osv

Jeg kunne godt tænke mig en kode, som tager og skriver tallet ud og det tal i parentes skriverfør, og hermed kommer der en linjeskift, eksempel:

Strengen: 24(2),25(2),26(100),30(1)

Kommer i gennem koden, og ender sådan her:
2 * 24
2 * 25
100 * 26
1 * 30

Forstår i?
Avatar billede nmh Nybegynder
30. september 2003 - 11:04 #1
dim A
A=split(TestVar,",")
Nu er delene i testvar gemt i A.
A(0)="24(2)" , A(1)="25(2)"
Avatar billede nmh Nybegynder
30. september 2003 - 11:07 #2
Nu er det så blot at pille tallene i paerntes yd.
for i=0 to Ubound(A)
  s=Replace(A(i),"(","*")
  s=Replace(s,")",")","")
  Response.write(s & "<br>")
next
Avatar billede qurzyx Nybegynder
30. september 2003 - 11:10 #3
Fedt nok, men jeg skal de skal være to forskellige variabler.... Tallet udenfor parenteserne skal bruges som ID til at læse noget fra en DB`EN!!
Avatar billede nmh Nybegynder
30. september 2003 - 11:12 #4
Nu komer det godt nok ud på denne måde 24*2, 25*2,...
Hvis du vil have det vendt om:
hvis s="24*2" f.eks, så er
Left(s,Instr(s,"*")-1) strengen "24" og
Mid(s,InStr(s,"*")+1) strengen "2"
så s=Mid(s,InStr(s,"*")+1) & Left(s,Instr(s,"*")-1)
bliver til 2*24
Avatar billede nmh Nybegynder
30. september 2003 - 11:15 #5
Men så vil ID=Cint(left(s,Instr(s,"*")-1))
give dig ID-nummeret, og
Ptal=Cint(Mid(s,InStr(s,"*")+1) give dig det andet tal.
Jeg har ikke testet det endnu, men det kan let rettes til, hvis du vilhave det på en anden måde.
Avatar billede qurzyx Nybegynder
30. september 2003 - 11:18 #6
Det er præcist det jeg vil have... Men jeg får en fejl.. Kan du måske selv lige teste den... Tusinde tak..
Avatar billede qurzyx Nybegynder
30. september 2003 - 11:40 #7
Tak
Avatar billede nmh Nybegynder
30. september 2003 - 11:47 #8
Ok, jeg ser på det, men jeg har først tid engang i eftermiddag.
Takker for point.
:o)
Avatar billede nmh Nybegynder
30. september 2003 - 12:41 #9
Her er et VBscript program, som tester tingene.
Gem det med navnet test.vbs
Når du klikker på det vil det køre. Du behøver ikke at lææge det på asp-serveren.
Der er ikke nogen kontrol indbygget mht, at der faktisk er tale om tal overalt.
56() vil give fejl og 56 vil give fejl.
Er du sikker på din streng med 12(34),.... overalt er rigtig opbygget?
Der konverteres til heltal ved at bruge Cint.
Der vil komme fejl hvis strengen er 123456(56)
I så fald skal du bruge Clng istedet for Cint.

Option Explicit
dim TestVar, i, s, A, ID, Ptal
TestVar="2(23),4(777),1234(15)"
A=split(TestVar,",")
for i=0 to Ubound(A)
  s=A(i)
  s=Replace(s,")","")
  ID=Cint(Left(s,Instr(s,"(")-1))
  Ptal=Cint(Mid(s,Instr(s,"(")+1))
  'Her er en testudskrift. Virker ikke under ASP
  msgbox TestVar & VBCrLf & ID & VBCrLf & Ptal
next
Avatar billede nmh Nybegynder
30. september 2003 - 13:57 #10
Her er en anden måde at lave det på:
Option Explicit
dim TestVar, i, s, A, B, ID, Ptal
TestVar="2(23),4(777),1234(15)"
A=split(TestVar,",")
for i=0 to Ubound(A)
  B=split(Replace(A(i),")",""),"(")
  ID=Cint(B(0))
  Ptal=Cint(B(1))
  'Testudskrift:
  msgbox TestVar & VBCrLf & ID & VBCrLf & Ptal
next
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