webForumDet fria alternativet

Splita en sträng

ASP

6 svar · 383 visningar · startad av leox

Medlem sedan mars 200550 inlägg
Frågan#1

Hej WF.

Har ett litet problem..
vill "splitta" min text-sträng.

Har olika värden som hämtas från en cookies, varje produkt har 4 värden var (artikelnummer, produktnamn, antal, pris)

När jag loopar ut den blir det såhär:
19340:Manhattan:1:1995 (ska va kommatecken) 19330:Armani:1:7995

Nu undrar jag hur jag skall göra för att få in ett kommatecken mellan produkterna, efter pris och innan nästa artikelnummer så skall det in ett kommatecken.. Detta måste även funka om man har fler produkter.

Tacksam för snabbt svar

Medlem sedan nov. 20021 222 inlägg
#2

Du får lägga in i kakan så att det är ett mellanslag efter varje "paket" av värde. Här är ett exempel

str = Request.Cookies("DIN KAKA")
Arr = split(str, " ")

For i = 0 To Ubound(Arr) 
  response.write Arr(i) & ","
Next
Medlem sedan maj 200010 687 inlägg
#3

Räcker med:

str = Replace(str, " ", ",")
Medlem sedan okt. 2004392 inlägg
#4

Erik Juhlin skrev:

Räcker med:

str = Replace(str, " ", ",")

Jag kanske har fel men är det inte osäkert ifall man gör så?
Eftersom det finns ett "fält" i den arrayen som är ett namn och namn kan innehålla mellanslag.

Men som sagt jag kan ha fel.

Medlem sedan maj 200010 687 inlägg
#5

Nej det har du rätt i. Men joels funktion är inte på något sätt bättre då.
Det han har gjort är en hemmagjord replace funktion.

Medlem sedan okt. 2004392 inlägg
#6

Fixade till något... detta script funkar perfekt ifall du inte har mellanslag på artikelnummer, antal eller pris men på produktnamn får du ha mellanslag.

Jag har testat med dem två exemplen du gav, både enskilt och tillsammans, det funkade bra. Testade också mellanslag på namnet, det funka också bra.
I alla fall, nog med snack... här har du

Function fixaStr(Str)
  Set objRegExp = New regexp
  objRegExp.Global = true
  objRegExp.IgnoreCase = true
  objRegExp.Pattern = "[A-Za-z0-9]+\:[A-Öa-ö0-9 ]+\:[A-Za-z0-9]+\:[A-Za-z0-9]+"
  Set Matches = objRegExp.Execute(Str)
  For Each Match in Matches
    fixaStr = fixaStr & Match.value & ","
  Next
  fixaStr = Left(fixaStr,Len(fixaStr)-1)
  'fixaStr = split(fixaStr,",")
End Function

Ta bort ' (enkel knot) i slutet ifall du vill att funktionen ska bli en Array istället för en variabel.

Medlem sedan mars 200550 inlägg
#7

Tack till samtliga för er hjälp :)

HAde gött

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)