Avatar billede coldray Nybegynder
14. maj 2004 - 12:40 Der er 11 kommentarer og
1 løsning

Split streng

Jeg har en streng der kan se således ud:

Spiller Navn (#132)* 1 809p $1 091 914
eller
Spiller Navn Whee (#133) 10 000p $891 914

Jeg kan evt. selv foreslå at bruge en replace på mellemrummene.. så strengen bliver noget ala:

SpillerNavnWhee(#133)10000p$891914

Derefter skal jeg bruge følgende variabler (i forhold til eksemplet):

Spillernavn = "SpillerNavnWhee"
SpillerID = "133"
Points = "10000"
Networth = "891914"

.. Det må gerne være i en array, men her har jeg bare givet nogle eksempler på hvad jeg skal bruge!

På forhånd tak!
Avatar billede coldray Nybegynder
14. maj 2004 - 12:41 #1
Derved kan strengen skilles ad ved ting som går igen, såsom

Fra start til "("
Fra "(#" til ")"
Fra ")" til "p"
Fra "$" til slut
Avatar billede fennec Nybegynder
14. maj 2004 - 12:51 #2
du kan bruge left(), mid() og right() funktionerne...

myvar = "SpillerNavnWhee(#133)10000p$891914"
Spillernavn = left(myvar,instr(myvar,"("))
SpillerID = mid(myvar,instr(myvar,"(#"),instr(myvar,")")-instr(myvar,"(#"))
Points = mid(myvar,instr(myvar,")"),instr(myvar,"p")-instr(myvar,")"))
Networth = right(myvar,len(myvar)-instr(myvar,"$"))

der skal nok lige lægges et par tal til og fra for at få de helt rigtige positioner.
Avatar billede fennec Nybegynder
14. maj 2004 - 12:56 #3
her er den "rigtige" :o)

myvar = "SpillerNavnWhee(#133)10000p$891914"
Response.write  left(myvar,instr(myvar,"(")-1) &"<br>"
Response.write  mid(myvar,instr(myvar,"(#")+2,instr(myvar,")")-instr(myvar,"(#")-2) &"<br>"
Response.write  mid(myvar,instr(myvar,")")+1,instr(myvar,"p$")-instr(myvar,")")-1) &"<br>"
Response.write  right(myvar,len(myvar)-instr(myvar,"$")) &"<br>"
Avatar billede coldray Nybegynder
14. maj 2004 - 13:29 #4
Det virker perfekt..!

Hvis du gider, kan du så ikke også lige hjælpe mig med det her?

Hvis jeg nu har en textbox med flere spillere.. er det så muligt at splitte strengen op, så jeg kan dele de forskellige spillere op..

f.eks:

Spiller Navn (#132)* 1 809p $1 091 914
Spiller Navn Whee (#133) 10 000p $891 914

de bliver reduceret til dette:

SpillerNavn(#132)1809p$1091914
SpillerNavnWhee(#133)10000p$891914
(evt. flere)

.. så skal den nærmest deles der hvor der er VbCrLf..

Tak.
Avatar billede coldray Nybegynder
14. maj 2004 - 16:23 #5
Anyone?
Avatar billede ellebaek Nybegynder
16. maj 2004 - 15:42 #6
vil du hive dem ud i et array..?

function spiller(myvar)
Response.write  left(myvar,instr(myvar,"(")-1) &"<br>"
Response.write  mid(myvar,instr(myvar,"(#")+2,instr(myvar,")")-instr(myvar,"(#")-2) &"<br>"
Response.write  mid(myvar,instr(myvar,")")+1,instr(myvar,"p$")-instr(myvar,")")-1) &"<br>"
Response.write  right(myvar,len(myvar)-instr(myvar,"$")) &"<br>"
spiller = TRUE
end function

myarr = split(request.form("formnavn"),vbcrlf)

for i = 0 to UBound(myarr)
spiller(myarr(i))
next

Sådan her måske noget i den stil.
Avatar billede coldray Nybegynder
18. maj 2004 - 18:19 #7
Nu har jeg så følgende kode:

<form method="post" action="test.asp">
<%
Function clearStr(str)
myvar = str
myvar = Replace(myvar, "CT ", "")
myvar = Replace(myvar, "CL ", "")
Response.write "Name: " & left(myvar,instr(myvar,"(")-1) &"<br>"
myvar = Replace(myvar, "*", "")
myvar = Replace(myvar, " ", "")
Response.write "ID: " & mid(myvar,instr(myvar,"(#")+2,instr(myvar,")")-instr(myvar,"(#")-2) &"<br>"
Response.write "Points: " & mid(myvar,instr(myvar,")")+1,instr(myvar,"p$")-instr(myvar,")")-1) &"p<br>"
Response.write "Networth: $" & right(myvar,len(myvar)-instr(myvar,"$")) &"<br>"
End Function

Dim fulltext
fulltext = Request.Form("text")

function spiller(myvar)
  clearStr(myvar)
  spiller = TRUE
end function

myarr = split(fulltext, vbcrlf)

for i = 0 to UBound(myarr)
spiller(myarr(i))
next
%>
<textarea rows="21" name="text" cols="61"><%= fulltext %></textarea><input type="submit" value="Submit">
</form>

.. Men den giver følgende output:

Name: Too Good To Be ColdRay
ID: 13012
Points: 2684p
Networth: $1030966
Name: Valkyrie
ID: 203387
Points: 2089p
Networth: $835614

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'left'

/project/test.asp, line 7
..

Det jeg egentlig skal med værdierne, er at dele dem op i variabler.. så hvis jeg nu skal have 4 variabler til hverenkelt spiller.. hvordan skal jeg gøre det?

Det må være noget inde i min clearStr funktion!

På forhånd tak.
Avatar billede coldray Nybegynder
18. maj 2004 - 18:24 #8
Ahh.. det var fordi der var en tom linje nedenunder.. men skal stadig ha splittet det op i enkelte variabler til hverenkelt spiller - og helst så de er nemme at hive ud igen længede nede..
Avatar billede ellebaek Nybegynder
18. maj 2004 - 22:06 #9
hvad mener du med at hive dem ud længere nede ..?
Avatar billede coldray Nybegynder
19. maj 2004 - 14:15 #10
det er fordi jeg selv laver en db-conn hvor de skal checke om værdierne har ændret sig og lign.. så jeg skal ha dem ind i nogle arrays som jeg kan hive ud
Avatar billede ellebaek Nybegynder
21. maj 2004 - 16:04 #11
Hvis du skal have dem ind i arrays, så kan du gøre det her i stedet for at udskrive de forskellige informationer..

<%
Function clearStr(str)
myvar = str
myvar = Replace(myvar, "CT ", "")
myvar = Replace(myvar, "CL ", "")
'**** Skal rettes
Response.write "Name: " & left(myvar,instr(myvar,"(")-1) &"<br>"
myvar = Replace(myvar, "*", "")
myvar = Replace(myvar, " ", "")
'*** Skal rettes
Response.write "ID: " & mid(myvar,instr(myvar,"(#")+2,instr(myvar,")")-instr(myvar,"(#")-2) &"<br>"
'**** Skal rettes
Response.write "Points: " & mid(myvar,instr(myvar,")")+1,instr(myvar,"p$")-instr(myvar,")")-1) &"p<br>"
'**** Skal rettes
Response.write "Networth: $" & right(myvar,len(myvar)-instr(myvar,"$")) &"<br>"
End Function

Dim fulltext
fulltext = Request.Form("text")

function spiller(myvar)
  clearStr(myvar)
  spiller = TRUE
end function

myarr = split(fulltext, vbcrlf)

for i = 0 to UBound(myarr)
spiller(myarr(i))
next
%>
Hvis du kun vil have den ene information ud, så kan du smide den ene ind i et array. Ellers kan du smide dem alle ind...
Avatar billede coldray Nybegynder
07. august 2011 - 16:41 #12
lukker
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