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?
19 svar · 422 visningar · startad av arro
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?
Kan du inte låta bli att lägga in dom tomma posterna i arrayen från början i stället?
Tänkte precis fråga detsamma. :)
Nej, för de läggs till av en Split-funktion.
Hur ser din splitfunktion ut?
Ä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
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...
Nja, det fungerade inte..
Inte? För mig fungerar det!?!
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,
@nders: *ka-tjing*
:r
Men min kod var fin iallafall. :)
Red) Inte jag heller, jag får type mismatch.. :l
:( Jag får inte @nders kod att fungera !?!
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,
red) Glöm detta, jag såg fel.
ä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
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,
Japp, jag är het idag! :)
Wee! :D
Men.. om den inte ens är ett mellanslag då? Då blir det fel.. :l
myarray = array("A", " ", "", " ", " ", "C", " ", "D")
Då är det väl bara att köra Filter() ett par gånger?
Tack allihop. Här åker man ut på landet ett par dagar, så kommer man tillbaka till en helkurs i array-trimmning. Kul!