webForumDet fria alternativet

Ta bort tomma poster i en array.

19 svar · 422 visningar · startad av arro

arroMedlem sedan okt. 200154 inlägg
#1

Hur gör man?

Min ärräj ser ut såhär: bajs(1, , ,2) och jag vill ta bort de poster som bara är mellanslag. Hur?

solbulleMedlem sedan mars 20015 287 inlägg
#2

Kan du inte låta bli att lägga in dom tomma posterna i arrayen från början i stället?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#3

Tänkte precis fråga detsamma. :)

arroMedlem sedan okt. 200154 inlägg
#4

Nej, för de läggs till av en Split-funktion.

solbulleMedlem sedan mars 20015 287 inlägg
#5

Hur ser din splitfunktion ut?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#6

Äsch. Vi löser det istället. ;)

dim strArray(5)
strArray(0) = "Orchfaster"
strArray(1) = ""
strArray(2) = "Alvkräk"
strArray(3) = ""
strArray(4) = "Trollmamma"

for i = lbound(strArray) to ubound(strArray)
	if strArray(i) & "" <> "" then
		intEmpty = intEmpty & strArray(i) & ","
		intSizeTmp = intSizeTmp + 1 
	end if
next

dim tmpArray
tmpArray = split(left(intEmpty,len(intEmpty)-1),",")

for y = lbound(tmpArray) to ubound(tmpArray)
	response.write "Värde:" & tmpArray(y) & "<br>"
next
solbulleMedlem sedan mars 20015 287 inlägg
#7

Hm, snyggt iofs, men... (varför finns det alltid ett men? ;) ) Om det är ett mellanslag i strängen funkar det inte, var det inte det han hade?

if trim(strArray(i)) & "" <> "" then

kanske...

OveRRidEMedlem sedan feb. 200112 078 inlägg
#8

Nja, det fungerade inte..

solbulleMedlem sedan mars 20015 287 inlägg
#9

Inte? För mig fungerar det!?!

@ndersMedlem sedan juni 200032 969 inlägg
#10

Vete 17 om man verkligen måste krångla så mycket...
Något sånt här borde duga:

strJoinedArray = Join(strArray, "~~")
strJoinedArray = Replace(strJoinedArray, "~~ ~~", "~~")
if left(strJoinedArray, 3) = " ~~" then strJoinedArray = right(strJoinedArray, len(strJoinedArray)-3) ' tar bort första posten om den innehåller mellanslag
if right(strJoinedArray, 3) = "~~ " then strJoinedArray = left(strJoinedArray, len(strJoinedArray)-3) ' tar bort sista posten om den innehåller mellanslag
strArray = split(strJoinedArray, "~~")

~~ är bara en godtycklig separator som jag utgår ifrån inte finns i arrayen. Byt den gärna mot något tecken, vilket som helst.

Mvh,

OveRRidEMedlem sedan feb. 200112 078 inlägg
#11

@nders: *ka-tjing*

:r

Men min kod var fin iallafall. :)

Red) Inte jag heller, jag får type mismatch.. :l

solbulleMedlem sedan mars 20015 287 inlägg
#12

:( Jag får inte @nders kod att fungera !?!

@ndersMedlem sedan juni 200032 969 inlägg
#13

Den är extremt otestad, så det är inte så konstigt om den inte fungerar. :e

Pinsipen! ;)

Red: Äh, jag testar väl då, brb

Red2: För mig verkar det fungera alldeles ypperligt.

Testkod:

strArray = Array ("k", " ", "kf", "k", " ")
Response.Write ubound(strArray) & "<br>"
strJoinedArray = Join(strArray, "~~")
strJoinedArray = Replace(strJoinedArray, "~~ ~~", "~~")
if left(strJoinedArray, 3) = " ~~" then strJoinedArray = right(strJoinedArray, len(strJoinedArray)-3) ' tar bort första posten om den innehåller mellanslag
if right(strJoinedArray, 3) = "~~ " then strJoinedArray = left(strJoinedArray, len(strJoinedArray)-3) ' tar bort sista posten om den innehåller mellanslag
strArray = split(strJoinedArray, "~~")
Response.Write ubound(strArray) & "<br>"
Response.Write "-" & strJoinedArray & "-"

Mvh,

OveRRidEMedlem sedan feb. 200112 078 inlägg
#14

red) Glöm detta, jag såg fel.

doggelitoMedlem sedan juni 20003 076 inlägg
#15

är jag fel ute om jag säger att man kan göra så här:

myarray = array("A", " ", " ", " ", " ", "C", " ", "D")
myarray = filter(myarray, " ", false, 1)

for i = lbound(myArray) to ubound(myArray)
response.write myarray(i) & "<br>"
next
@ndersMedlem sedan juni 200032 969 inlägg
#16

doggelito! Kanon!
Fick man lära sig något idag också! :D

Läsning: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctfilter.asp

Mvh,

doggelitoMedlem sedan juni 20003 076 inlägg
#17

Japp, jag är het idag! :)

OveRRidEMedlem sedan feb. 200112 078 inlägg
#18

Wee! :D

Men.. om den inte ens är ett mellanslag då? Då blir det fel.. :l

myarray = array("A", " ", "", " ", " ", "C", " ", "D")
@ndersMedlem sedan juni 200032 969 inlägg
#19

Då är det väl bara att köra Filter() ett par gånger?

arroMedlem sedan okt. 200154 inlägg
#20

Tack allihop. Här åker man ut på landet ett par dagar, så kommer man tillbaka till en helkurs i array-trimmning. Kul!

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