webForumDet fria alternativet

Kommaseparerad sträng in i en array

17 svar · 489 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1

Hej hopp...

Kan någon lära mig hur man enklast stoppar in datat i en kommaseparerad sträng in i en array?

mattiasnordinMedlem sedan maj 20012 080 inlägg
#2

Hmm... ibland kan till och med jag förstå Devguru.com

<% sTest = "0, 1, 2, 2" %>
<%= sTest %>
<% myArray = split(sTest,",") %> 
<hr>
<%= myArray(3)%>
<hr>
@ndersMedlem sedan juni 200032 969 inlägg
#3

Men, inte har väl DevGuru så många contextswitchar? :)

mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

ha hahhhahh.... @nders, jag förstod inte ett ord av vad du just nu sa. Contextswitchar ????

Jag är glad bara det jag gör nästan fungerar [ler ännu större] :)[/ler ännu större]

@ndersMedlem sedan juni 200032 969 inlägg
#5

Contextswitchar: <% %>

Det ser bara kladdigt ut om har en massa onödiga sådana.

<% 
sTest = "0, 1, 2, 2"
Response.Write sTest
myArray = split(sTest,",")
Response.Write "<hr>" & myArray(3) & "<hr>"
%>
Engine^Medlem sedan dec. 20003 887 inlägg
#6

Att du hoppar mellan ASP och HTML med <% ... %>

red. Där var snabeln i farten minsann... ;)

mattiasnordinMedlem sedan maj 20012 080 inlägg
#7

Det är möjligt... jag testade rad för rad och då blidde det så.
Förstår att det var totalt onödigt ;)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#8

@nders: Ser man prestandamässigt så är ju din kod sämre i.o.m. att du konkatenerar! ;)

mattiasnordinMedlem sedan maj 20012 080 inlägg
#9

Dagens Ord 1 : Contextswitchar
Dagens Ord 2 : konkatenerar Okej. Och det betyder? :stud

Medans man ändå har det på tal. Är det någon fördel med 1 eller 2 nedan?

1:

<%
response.write "<table>"
for i = 1 to x
response.write "<tr>"
response.write "<td>" &var1 &"</td>"
response.write "</tr>"
next
response.write "</table>"
%>

2:

<table>
<% for i = 1 to x %>
<tr>
<td> <%=var1%> </td>
</tr>
<% next %>
</table>

Tycker att man ser alternativ 1 på en hel del ställen. Vad beror det på? Jag tycker att alternativ 2 är mer lättläst. :)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#10

Folk har fått för sig att alternativ är bättre prestandamässigt.
Alternativ 2 är klart mer lättläst så kör med det!

Dock håller jag med @nders om att man inte ska context-switcha helt i onödan. @nders kod känns faktiskt mer lättläst än din.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#11

Konkatenera är när man sätter ihop två strängar med "&". Exempel:

Response.Write "<strong>" & foo & "</strong>"

Dåligt prestandamässigt.
I alla fall vid större mängder data. I @nders exempel så gör det ingen skillnad för det är så lite. :)

mattiasnordinMedlem sedan maj 20012 080 inlägg
#12

Bra, tack... Ja mitt första exempel är inte något jag brukar göra men det blidde bara så i mitt test.

Då fortsätter jag att köra alternativ 2. Ska man ha en mer advancerad tabell så fungerar även färgkodningen i min lilla aplikation bättre när det är riktig html på sina ställen. Det är klart possitivt :)

Tack för informationen ni alla (!)

Jesper TMedlem sedan nov. 20017 144 inlägg
#13

Erik Juhlin skrev:

Dåligt prestandamässigt.
I alla fall vid större mängder data. I @nders exempel så gör det ingen skillnad för det är så lite. :)

Erik: Vad tror du är bäst i detta fall (om du har långa strängar såklart)?

var = "text 1 "
var = var & "text 2 "
var = var & "text 3 "

vs.

var = "text 1 " &_
      "text 2 " &_
      "text 3 "
@ndersMedlem sedan juni 200032 969 inlägg
#14

Erik Juhlin skrev:

@nders: Ser man prestandamässigt så är ju din kod sämre i.o.m. att du konkatenerar! ;)

Jo, det spelar så himskans stor roll i det här fallet, så antagligen går cpu:n upp 100% några sekunder innan den är klar.

Hur mycket data / hur många konkateneringar pratar vi om när det verkligen går att märka? Hast du Exempel, bitte?

Det känns riktigt fånigt att försöka optimera bort nanosekunder i exekveringstid om koden blir svårläst.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#15

Jag la ju in en smiley + att jag senare skrev att i ditt fall spelar det ingen roll. Skoja alltså. :)
Har inga exempel. Men jag har märkt stora prestandaproblem när jag genererat tab-separerade filer och liknande på ca 2000 rader.
Då har det tagit minuter att generera filen. När jag sen gjort om det till arrayer som joinats ihop så har det tagit några få sekunder.
Men det är så klart idiotiskt att helt sluta använda konkateneringar för att tjäna nanosekunder. :)

Jesper T:
Tror inte det är särskilt stor skillnad på dina exempel. Lika många konkateneringar ju.
Däremot kan man faktiskt ibland tjäna på att använda paranteser när man konkatenerar. Exempel:

'1. På vanligt sätt:
For i = 0 To 1999
	b = "humle"
	c = "dumle"
	a = a & b & c
Next

'2. Med paranteser
For i = 0 To 1999
	b = "humle"
	c = "dumle"
	a = a & (b & c)
Next

I exempel 1 så konkateneras jätteklumpen A med B och sen konkateneras den jätteklumpen med C.
I exempel 2 så konkateneras först B med C och sen sätts de ihop med jätteklumpen A.

Grymmast är ju dock:

Dim v(1999)
For i = 0 To 1999
	b = "humle"
	c = "dumle"
	v(i) = b & c
Next
a = Join(v, "")

:)

@ndersMedlem sedan juni 200032 969 inlägg
#16

Erik Juhlin skrev:

Jag la ju in en smiley + att jag senare skrev att i ditt fall spelar det ingen roll. Skoja alltså. :)

Jepp, jag vet. Det var meningen att det skulle vara en i mitt inlägg också, men den glömde jag tydligen. :)

Här kommer kompensationen: ;)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#17

:)

mattiasnordinMedlem sedan maj 20012 080 inlägg
#18

Att jag skulle få 16 svar i denna enkla tråd trodde jag inte. *LOL*

Nu ska jag gå hem. Ha en trevlig dag alla!

147 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)