Avatar billede dont Nybegynder
15. oktober 2003 - 15:53 Der er 18 kommentarer og
1 løsning

læse string indtil mellemrum

Jeg har brug for lidt hjælp til hvordan jeg læser en del af en string fra højre til venstre. Det jeg skal læse er teksten TIL, men IKKE MED mellemrummet.

fx. "Lars Lund" --> her skal jeg have isoleret "Lund", som skal være min nye string.

Er der nogle der kan hjælpe med det?
Avatar billede -thomas- Nybegynder
15. oktober 2003 - 15:56 #1
Ja, du skal bruge Split-funktionen. Hvilken version vb har du?

Det er vist sådan her:
strNavn = Split("Lars Lund", " ")
Avatar billede -thomas- Nybegynder
15. oktober 2003 - 15:57 #2
Eller du kan nøjes med

strNavn = Split("Lars Lund")

da mellemrum er default.
Avatar billede martin_moth Mester
15. oktober 2003 - 16:00 #3
-thomas- : Split returnerer et array med både "Lars" og "Lund" i.

En anden måde der specifikt gør præcis havd dont ønsker er som følger:

Læs din string fra højre, karakter for karakter. Når du møder et mellemrum gemmes dettes position. Herefter napper du sidste del af strengen fra mellemrummet og smider over i en variabel...

Kode kommer om 2 sek...
Avatar billede stefanfuglsang Juniormester
15. oktober 2003 - 16:02 #4
Uddybning:
dim strNavn() as string
strNavn = Split("Lars Lund")
srtNavn(1) er "Lund"
Avatar billede -thomas- Nybegynder
15. oktober 2003 - 16:05 #5
martin_moth> Ja, det ved jeg udmærket :)
Men det er da også efter min mening den nemmeste måde at løse det på...
Avatar billede martin_moth Mester
15. oktober 2003 - 16:12 #6
Ja, men følgende er mere rigtig :o)

For i = 0 To Len(Navn) - 1
  If Mid(Navn, Len(Navn) - i, 1) = " " Then Exit For
Next i

If i = Len(Navn) Then
  MsgBox "Der er ingen mellemrum der skiller karakterer"
Else
  j = Len(Navn) - i
  Navn2 = Right(Navn, Len(Navn) - i + 1)
  MsgBox "Højre delstreng er : '" & Right(Navn, Len(Navn) - i + 1) & "'"
End If
Avatar billede martin_moth Mester
15. oktober 2003 - 16:13 #7
Hov - en lille fejl, der er rettet nu:

For i = 0 To Len(Navn) - 1
  If Mid(Navn, Len(Navn) - i, 1) = " " Then Exit For
Next i

If i = Len(Navn) Then
  MsgBox "Der er ingen mellemrum der skiller karakterer"
Else
  MsgBox "Højre delstreng er : '" & Right(Navn, Len(Navn) - i + 1) & "'"
End If
Avatar billede martin_moth Mester
15. oktober 2003 - 16:18 #8
I ovenstående er 'i' en tæller, fx. en Long, og 'Navn' er naturligvis en String
Avatar billede stefanfuglsang Juniormester
15. oktober 2003 - 16:24 #9
Man kan jo gå over åen efter vand...
for-løkken gør det samme som InStr
Avatar billede martin_moth Mester
15. oktober 2003 - 16:25 #10
Næ...
Avatar billede -thomas- Nybegynder
15. oktober 2003 - 16:26 #11
Ja, og jeg har kun VB5.0 som slet ikke har Split-funktionen :-(, så der kommer ingen argumenter fra min side...
Avatar billede dont Nybegynder
15. oktober 2003 - 16:39 #12
det virker fint. tak for hjælpen.
Avatar billede dont Nybegynder
15. oktober 2003 - 16:40 #13
hov havde ikke opdateret billedet, så jeg så ikke alle de andre svar. Tak for indsatsen.
Avatar billede martin_moth Mester
15. oktober 2003 - 16:43 #14
Øhh - nu fik jeg ikke et eneste point, men jeg fastholder atltså at min løsning er mere korrekt.

1. Split-løsningen tager ikke højde for at der kan være nul eller flere end et mellemrum (det kunne den nu nemt omskrives til at gøre) - det gør min løsning.

2. Har man en string med mange mange mange tegn i "fornavnet" og et kort "efternavn", opretter man med split et array der indeholder alle de mange bogstaver man ikke skal bruge til noget. Det gør min løsning ikke.

Men det er vel smag og behag...
Avatar billede pytman Nybegynder
11. marts 2004 - 08:52 #15
Martin_moth..

Jeg prøvede lige det her du har lavet.. MEN den tjekker jo fra venstre mod højre.. :(

Jeg er igang med at lave et program hvor jeg skal tjekke en tekstreng igennem for "\"
fra højre mod venstre og dele ved første "\" da jeg kun skal bruge filnavnet.

EX.:

"C:\Programmer\Lavasoft\Ad-aware 6\Ad-aware.exe"

i den streng skal jeg kun have trukket "Ad-aware.exe" ud...

Hvis du ved det opretter jeg et spørgsmål så du kan få points for det..

Håber du kan svare hurtigt da jeg står og mangler det :D Hehe
Avatar billede -thomas- Nybegynder
11. marts 2004 - 09:02 #16
Hej pytman,

det kan du f.eks. gøre sådan her:

Dim arrTest, strResultat
arrTest = Split("C:\Programmer\Lavasoft\Ad-aware 6\Ad-aware.exe", "\")
strResultat = arrTest(UBound(arrTest))
Avatar billede pytman Nybegynder
11. marts 2004 - 09:06 #17
Skal jeg oprette et spørgsmål ???
hvis du altså vil have points?
Avatar billede martin_moth Mester
11. marts 2004 - 10:19 #18
pytman: Du kan da bare læse fra den anden side, hvis du ønsker det...
Avatar billede -thomas- Nybegynder
11. marts 2004 - 10:38 #19
points er ligemeget...
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