GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2007-Jul-17

Title: Leerzeichen
Post by: WPShadow on 2007-Jul-17
Hi!

Gibt es eigentlich einen simplen Befehl, mit dem man Leerzeichen löschen kann bzw. einen Teil der Leerzeichen bei Strings usw.?

Zahlen sind kein Problem, aber Strings, da ich die Daten so setzen möchte:

index_0=                test  255  128   13   1  25

oder auch

index_0=           lauf test  255  128   13   1  25

So in der Art! Und dabei möchte ich erst den ersten Teil einlesen, ohne, daß er mir die Leerzeichen zwischen lauf & test rauslöscht.

GLG

W.
Title: Leerzeichen
Post by: Quentin on 2007-Jul-17
komplett alle Leerzeichen in einem String löschen könnte man z.B. so

Code (glbasic) Select
a$ = "ein satz mit Leerzeichen 1 2 44"
b$ = REPLACE$(a$, " ", "")
PRINT a$, 0, 0
PRINT b$, 0, 20
SHOWSCREEN
MOUSEWAIT
oder alle Leerzeichen löschen mit Ausnahme des ersten

Code (glbasic) Select
a$ = "ein satz mit Leerzeichen 1 2 44"
pos = INSTR(a$, " ") + 1
b$ = MID$(a$, 0, pos) + REPLACE$(MID$(a$, pos, LEN(a$) - pos), " ", "")
PRINT a$, 0, 0
PRINT b$, 0, 20
SHOWSCREEN
MOUSEWAIT
oder so, daß z.B. nur überflüssige (doppelte) Leerzeichen entfernt werden
Code (glbasic) Select
a$ = "ein   satz    mit             vielen Leerzeichen 1        2 44"
b$ = REPLACE$(a$, "  ", " ")
PRINT a$, 0, 0
PRINT b$, 0, 20
SHOWSCREEN
MOUSEWAIT
Title: Leerzeichen
Post by: WPShadow on 2007-Jul-17
Im Prinzip brauche ich eher sowas wie TRIM$ ( <-- QBasic) Oder sowas in der Art!
Title: Leerzeichen
Post by: Quentin on 2007-Jul-17
Achso. dann hier ein paar liebgewonnene String-Funktionen ;)

ltrim$ - schneidet führende Leerzeichen ab
rtrim$ - schneidet nachfolgende Leerzeichen ab
trim$ - macht beides in einem Abwasch

Code (glbasic) Select
a$ = "   ein satz mit führenden und folgenden Leerzeichen    "
PRINT "/"+a$+"/", 0, 0
PRINT "/"+ltrim$(a$)+"/", 0, 20
PRINT "/"+rtrim$(a$)+"/", 0, 40
PRINT "/"+trim$(a$)+"/", 0, 60
SHOWSCREEN
MOUSEWAIT


// ------------------------------------------------------------- //
// -=#  LTRIM$  #=-
// ------------------------------------------------------------- //
FUNCTION ltrim$: str$

  LOCAL i, length
 
  length = LEN(str$) - 1
 
  FOR i = 0 TO length
    IF MID$(str$, i, 1) = " "
      str$ = MID$(str$, i+1, length-i)
    ELSE
      RETURN str$
    ENDIF
  NEXT

ENDFUNCTION // LTRIM$


// ------------------------------------------------------------- //
// -=#  RTRIM$  #=-
// ------------------------------------------------------------- //
FUNCTION rtrim$: str$

  LOCAL i, length
 
  length = LEN(str$) - 1
 
  FOR i = length TO 0 STEP -1
    IF MID$(str$, i, 1) = " "
      str$ = MID$(str$, 0, i)
    ELSE
      RETURN str$
    ENDIF
  NEXT

ENDFUNCTION // RTRIM$


// ------------------------------------------------------------- //
// -=#  TRIM$  #=-
// ------------------------------------------------------------- //
FUNCTION trim$: str$
  RETURN ltrim$(rtrim$(str$))
ENDFUNCTION // TRIM$
Title: Leerzeichen
Post by: WPShadow on 2007-Jul-17
Yeah! Das ist super! Danke!

Damit kann ich mich heute Abend gleich mal an meine GLDB ransetzen! =)
Title: Leerzeichen
Post by: Quentin on 2007-Jul-17
lol, du meinst das also wirklich ernst mit deiner DB?

die Funktionen noch mal etwas verfeinert, sollten auch schneller arbeiten.

Code (glbasic) Select
a$ = "   ein satz mit führenden und folgenden Leerzeichen    "
PRINT "/"+a$+"/", 0, 0
PRINT "/"+ltrim$(a$)+"/", 0, 20
PRINT "/"+rtrim$(a$)+"/", 0, 40
PRINT "/"+trim$(a$)+"/", 0, 60
SHOWSCREEN
MOUSEWAIT


// ------------------------------------------------------------- //
// -=#  LTRIM$  #=-
// ------------------------------------------------------------- //
FUNCTION ltrim$: str$

  LOCAL i, length

  length = LEN(str$) - 1

  FOR i = 0 TO length
    IF MID$(str$, i, 1) <> " "
      RETURN MID$(str$, i, length-i)
    ENDIF
  NEXT

ENDFUNCTION // LTRIM$


// ------------------------------------------------------------- //
// -=#  RTRIM$  #=-
// ------------------------------------------------------------- //
FUNCTION rtrim$: str$

  LOCAL i, length

  length = LEN(str$) - 1

  FOR i = length TO 0 STEP -1
    IF MID$(str$, i, 1) <> " "
      RETURN MID$(str$, 0, i+1)
    ENDIF
  NEXT

ENDFUNCTION // RTRIM$


// ------------------------------------------------------------- //
// -=#  TRIM$  #=-
// ------------------------------------------------------------- //
FUNCTION trim$: str$
  RETURN ltrim$(rtrim$(str$))
ENDFUNCTION // TRIM$
Title: Leerzeichen
Post by: WPShadow on 2007-Jul-17
Na klar meine ich das ernst! Ich setze mich noch heute Abend dran und programmiere mal ein erstes Konzept! Wird nichts wildes, ich will ja nicht Oracle Konkurrrrrrrrenz machen! Die werden ja neidisch! =)
Title: Leerzeichen
Post by: Kitty Hello on 2007-Jul-17
Schau mal bei DDgui das DDgui_get() an. Das macht etwa das, was Du willst, nur mit einer effektiveren Suche als FOR i=0 TO emelents...
Ich rate stark dazu TYPEs zu verwenden, um schneller zu werden.
Title: Leerzeichen
Post by: WPShadow on 2007-Jul-17
Ok! Gucke rein! =) Danke für den Tip!