webForumDet fria alternativet
Logga in / Bli medlem

array

ASP

8 svar · 163 visningar · startad av aleborg

Medlem sedan jan. 20013 341 inlägg
Trådstart#1

jag har en sträng som ser ut ungefär så här:

ord1,ord2,ord3,ord4 vcrlf ord1,ord2,ord3,ord4 vcrlf ord1,ord2,ord3,ord4 vcrlf ord1,ord2,ord3,ord4 vcrlf ord1,ord2,ord3,ord4 vcrlf

Jag behöver ha ut ord1 i varje "rad" som är splittad med vbcrlf. HUR?

Medlem sedan dec. 200012 464 inlägg
#2
'str sträng med rader indelade av vbcrlf
dim a
a = split(str,vbcrlf)

dim words,firstWords()
words = ubound(a) + 1
redim firstWords(words)

dim i
for i = 0 to words
  firstWords(i) = left(a(i),instr(a(i),",")-1)
next
Medlem sedan jan. 20013 341 inlägg
#3

Glömde säga att dom 5 första "raderna" inte följer det mönstret och ska inte inkluderas överhuvudtaget!

Så nu får jag:
Invalid procedure call or argument: 'left'

Medlem sedan dec. 200012 464 inlägg
#4

Så här då, nu hoppar jag över de fem första och jag har även lagt till en kontroll om det finns ett komma. Om inte så lagras hela den raden som ett ord.

'str sträng med rader indelade av vbcrlf
dim a
a = split(str,vbcrlf)
dim words,firstWords()
words = ubound(a) + 1 - 5
redim firstWords(words)

dim i,pos
for i = 0 to words
pos = instr(a(i+5),",")-1)
'dubbelkoll
if pos > 0 then
   firstWords(i) = left(a(i+5),pos)
else
   firstWords(i) = a(i+5)
end if
next
Medlem sedan jan. 20013 341 inlägg
#5

hmm, nu funkar det bättre men nu får jag

Subscript out of range: '[number: 24]'

på rad:
pos = instr(a(i+5),",")-1

Medlem sedan dec. 200012 464 inlägg
#6

Jag gick ett steg för långt.

'str sträng med rader indelade av vbcrlf
dim a
a = split(str,vbcrlf)
dim words,firstWords()
words = ubound(a) + 1 - 5
redim firstWords(words)
dim i,pos
for i = 0 to words - 1
pos = instr(a(i+5),",")-1)
'dubbelkoll
if pos > 0 then
firstWords(i) = left(a(i+5),pos)
else
firstWords(i) = a(i+5)
end if
next
Medlem sedan jan. 20013 341 inlägg
#7

tack, nu funkar det!

om någon annan vill använda koden så ska det tilläggas att den här raden:
pos = instr(a(i+5),",")-1)

ska vara
pos = instr(a(i+5),",")-1

Medlem sedan jan. 20013 341 inlägg
#8

Någon som vet hur man får fram ord 3 istället???

Medlem sedan dec. 200012 464 inlägg
#9
'str sträng med rader indelade av vbcrlf
dim a
a = split(str,vbcrlf)
dim words,firstWords()
words = ubound(a) + 1 - 5
redim firstWords(words)
dim i,b
for i = 0 to words - 1
b = split(a(i+5),",")
if  ubound(b) >= 2 then
firstWords(i) = b(2)
else
firstWords(i) = a(i+5)
end if
next
262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)