Avatar billede martinfrost Nybegynder
29. september 2001 - 16:13 Der er 5 kommentarer og
1 løsning

Split streng i to

Fra en server modtages en streng som denne:
tekst#c=Farve

(Et eksmempel: Hej med dig#c=vbRed)

Nu skal denne streng så splittes i to. En streng der indeholder teksten alene og en streng der inderholder farven alene.

Det vil sige:

Strengtext = Hej med dig
Strengfarve = vbRed

#C= skal ikke bruges længere!!

Da strengtext godt kan indeholde # er det vigtigt, at strengen splittes ved det sidste # i hele strengen, da strengfarve ikke kan indeholde #.

Hvis serveren sender en streng uden indhold af: #c= så skal der ske følgende:

strengtext = strServer (hele strengen bare)
strengfarve = vbWhite (standardfarve)


Er der nogen, der kan hjælpe med at lave dette? Jeg  har prøvet mange ting, men kan IKKE få det til at virke...

/ Martin

Avatar billede johs_j Novice
29. september 2001 - 18:42 #1
ModtagetStreng = \"Hej med dig#c=vbRed\"

StrengTekst = Left(ModtagetStreng, InStr(ModtagetStreng, \"#\") - 1)
StrengFarve = Mid(ModtagetStreng, InStr(ModtagetStreng, \"=\") + 1)

Hvis der er mellemrum ved \" = \" skal +1 ændres til +2 i StrengFarve.
Avatar billede martinfrost Nybegynder
29. september 2001 - 18:59 #2
Men den går jo ikke, for hvis ModtagetStreng indeholder \"#\" eller \"=\" så splitter den jo for tidligt... Det er vigtigt at den splitter ved den sidste # og sidste \"=\" i strengen.

/ Martin
Avatar billede ea_data Nybegynder
29. september 2001 - 19:19 #3
Prøv med følgende kode:
ModtagetStreng = \"Hej med dig#c=vbRed\"

strengtekst = Left(ModtagetStreng, InStrRev(ModtagetStreng, \"#\") - 1)
strengfarve = Mid(ModtagetStreng, InStrRev(ModtagetStreng, \"=\") + 1)
Avatar billede martinfrost Nybegynder
29. september 2001 - 19:33 #4
Ea data:

Jeg tror det virker fint nok, men der mangler lige, hvis modtagetstreng ikke indeholder \"#c=\" så skal den ikke splittes.

Hvis du kan fikse den også, så er der point :)

men foreløbig tak :)

/ martin
Avatar billede ea_data Nybegynder
29. september 2001 - 19:36 #5
Rutinen kan også udbygges så der tages højde for at der ikke er angivet farve og at mellemrum fjernes fx således:

modtagetstreng = \"Hej med dig#c=vbred\"
pos = InStrRev(modtagetstreng, \"#c=\")
If pos <> 0 Then
strengtekst = Trim(Left(modtagetstreng, pos - 1))
strengfarve = Trim(Mid(modtagetstreng, pos + 3))
Else
strengtekst = modtagetstreng
strengfarve = \"vbWhite\"
End If
Avatar billede martinfrost Nybegynder
29. september 2001 - 19:45 #6
Jamen jeg takker da mange gange :) Det virker som det skal :)

Mange tak!!

/ Martin
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester