Avatar billede rasmus1234 Nybegynder
28. januar 2010 - 23:56 Der er 8 kommentarer og
1 løsning

Replace() og Trim() er ikke løsningen på blanke felter

jeg har en varetekst, der hedder noget i denne stil:
"Skraber 44    UnikA"

Jeg har forsøgt at bruge Trim() til at fjerne disse overflødige mellemrum, men den trimmer kun foran og bagved tekst-strengen. Og bruger jeg Replace([Varetekst1];"  ";" "), så sker erstatningen kun én gang.

I bund og grund, så leder jeg efter en funktion ligesom i Excel med '=fjern.overflødige.blanke()'

Hvad gør jeg?
Avatar billede mugs Novice
29. januar 2010 - 08:36 #1
Avatar billede rasmus1234 Nybegynder
29. januar 2010 - 09:50 #2
Tak for buddet, men det er ikke løsningen. Resultatet bliver til "Skraber44UnikA" :-(.

Det er derfor jeg benytter:
Replace([Varetekst1];"  ";" ")

Og ikke:
Replace([Varetekst1];"  ";" "),

Det er vel nødvendigt at køre loop x30 på Replace([Varetekst1];"  ";" ") for at nå ønskede resultat. Måske lave første Replace med 10 mellemrum til 1 mellemrum, så 5 mellemrum til 1 mellemrum, så 2 mellemrum til 1....
Avatar billede fdata Forsker
29. januar 2010 - 17:42 #3
Rolig nu. Du får lige en rutine, der klarer det hele:

Function Replace2(v As Variant) As String
  Dim p As Integer
  Dim s As String
 
  If IsNull(v) Then
    Replace2 = ""
  Else
    s = v
    p = InStr(1, s, "  ")
    Do Until p = 0
      s = Left(s, p - 1) & Mid(s, p + 1)
      p = InStr(1, s, "  ")
    Loop
    Replace2 = s
  End If
End Function

Smid den ind i et valgfrit modul og kald den med f.eks.
  Replace2([Varetekst1])
Avatar billede rasmus1234 Nybegynder
29. januar 2010 - 18:47 #4
SÅDAN fdata, dejligt, det eneste er bare at sidste tegn kan være " " et mellemrum. Kan der laves en tilføjelse på funktionen?
Avatar billede Slettet bruger
29. januar 2010 - 21:06 #5
rasmus 1234> 'Og bruger jeg Replace([Varetekst1];"  ";" "), så sker erstatningen kun én gang.'

Nej!

At erstatte forekomster med 2 mellemrum med et mellemrum er ikke det samme som at fjerne mellemrum.
Avatar billede mugs Novice
29. januar 2010 - 23:17 #6
Ltrim fjerner et venstrestillet mellemrum
Rtrim et højrestillet
Trim fjerner begge

Iøvrigt fungerer fdata's kode upåklageligt (som sædvanligt)
Avatar billede fdata Forsker
30. januar 2010 - 15:05 #7
Ja da. Så retter du bare sidste linie i funktionen fra
  Replace2 = s
til
  Replace2 = trim(s)
Avatar billede fdata Forsker
30. januar 2010 - 15:07 #8
>>> mugs ;o]
Avatar billede fdata Forsker
01. februar 2010 - 19:57 #9
Takker for point ;o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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