webForumDet fria alternativet

array

8 svar · 157 visningar · startad av aleborg

aleborgMedlem sedan jan. 20012 962 inlägg
#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?

------------------
Aleborg Solutions
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 465 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

------------------
essentitia preter non sans multiplicandum

aleborgMedlem sedan jan. 20012 962 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'

------------------
Aleborg Solutions
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 465 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

------------------
essentitia preter non sans multiplicandum

aleborgMedlem sedan jan. 20012 962 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

------------------
Aleborg Solutions
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 465 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

------------------
essentitia preter non sans multiplicandum

aleborgMedlem sedan jan. 20012 962 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

------------------
Aleborg Solutions
Data-Doktorn
Min egen musik!
Mitt coverband

aleborgMedlem sedan jan. 20012 962 inlägg
#8

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

------------------
Aleborg Solutions
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 465 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

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 03 feb 2002]

Genererad på 487 ms · cache AV · v20260730165559-full.f96bc7eb