Trim - Ersatzfunktion
Übersicht

![]() |
HolzchopfMeisterpackerBetreff: Trim - Ersatzfunktion |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist euch schon einmal aufgefallen, dass die Trim-Funktion, die BB von Haus aus mit sich bringt, auch unmengen an Sonderzeichen (*prust* Umlauten *hust*) wegschneidet ![]() Seht selbst: Code: [AUSKLAPPEN] txt$ = " äöèéôïMüîñä "
Print Trim( txt$ ) WaitKey() Nun, dem musste ich zwangsläufig entgegenwirken, deshalb habe ich kurzum eine kleine Ersatzfunktion geschrieben: Code: [AUSKLAPPEN] Function Trim$( Trm_Str$ )
Trm_Len = Len( Trm_Str$ ) If Not Trm_Len Then Return For Trm_i = 1 To Trm_Len If Asc( Mid( Trm_Str$, Trm_i, 1 )) >32 Trm_Start = Trm_i Exit EndIf Next If Not Trm_Start Then Return For Trm_i = Trm_Len To 1 Step -1 If Asc( Mid( Trm_Str$, Trm_i, 1 )) >32 Trm_End = Trm_i Exit EndIf Next If Trm_End -Trm_Start +1 >0 Then Return Mid( Trm_Str$, Trm_Start, Trm_End -Trm_Start +1 ) End Function Noch kurze Erklärung zum Code (für alle die, die das ganze komisch finden), für die, dies interessiert: Alle meine BB-Dateien fangen so an, ich hab mir bei grossen (Include-) Dateien angewöhnt, einen anständigen Header zu schreiben. Deshalb das hohe Kommentar / Codezeile -Verhältnis ![]() Trm_ vor allen Variablen in der Funktion hat seine Gründe: 1. Ermöglicht das V-Namen wie Trm_End (wäre ohne Präfix End und somit nicht möglich), *_Str, *_Len und andere kurze, selbsterklärende valide Variablennamen und 2. Verhindert das die Fehlerquote enorm - und zwar in dem Fall, dass eine Globale plötzlich in einer Funktion unbeabsichtigt geändert wird, weil der selbe Name gewählt wurde (Hey, ist euch das etwa noch nie passiert? ![]() Und nicht vergessen: Mängel bitte sofort melden =) MfG Edit: Habs nun so ähnlich gemacht wie SpionAtom, also mit einer Schleife, reicht ja durchaus ![]() Edit²: So. Sind wieder zwei Schleifen, gefällt mir persönlich besser... |
||
- Zuletzt bearbeitet von Holzchopf am Fr, Sep 01, 2006 16:59, insgesamt 4-mal bearbeitet
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, aber das musste ich einfach neuschreiben ![]() Aber dein ordentlicher Stil gefällt mir ![]() Code: [AUSKLAPPEN] Function Trim2$(t$) x = 1 y = Len(t$) While x <= y And c < 2 c = 0 If Mid$(t$, x, 1) = " " Then x = x + 1 Else c = c + 1 If Mid$(t$, y, 1) = " " Then y = y - 1 Else c = c + 1 Wend If y - x + 1 > 0 Then Return Mid$(t$, x, y - x + 1) End Function |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
mhm gefällt mir, guter Ansatz =) Werd ich später wahrscheinlich irgendwie übernehmen ![]() |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Hip Teen |
![]() Antworten mit Zitat ![]() |
---|---|---|
zwar eine nette Routine, aber hier bei mir in BlitzPlus V. 1.42 macht die Trim Funktion ehrlich gesagt keine Probleme.... | ||
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger" |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir gibts auch keine Probleme (auch B+), nur werden die Umlaute bei Upper ind Lower nicht größer/kleiner. | ||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann macht wohl nur B3D diesen Fehler :-/
Da habe ich ihn nämlich auch ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
TheMatrixBetreff: Trim Wettbewerb |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach Schnick-Schnack,
der ganze Code get auch noch kürzer, Code: [AUSKLAPPEN] Function trim2$(st$) For a=1 To Len(st$) buf$=Mid$(st$,a,1) : If buf$<>" " Then new_st$=new_st$+buf$ Next : Return new_st$ End Function Geht nich, gibs net ![]() |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schick, nur leider löscht dein Code alle Leerzeichen und nicht nur die führenden, bzw. angehängten.
Der String Code: [AUSKLAPPEN] " blblblaaaaaaaa blubsi möps "
wäre bei dir: Code: [AUSKLAPPEN] "blblblaaaaaaaablubsimöps"
sollte aber bei ql:Trim so aussehen: Code: [AUSKLAPPEN] "blblblaaaaaaaa blubsi möps"
ergo: erstmal informieren was ql:Trim eigentlich macht ![]() Für deine Funktion reicht auch eine Zeile: Code: [AUSKLAPPEN] MeinString$ = Replace(MeinString$," ","")
cheers |
||
![]() |
TheMatrixBetreff: Trim Contest die 2. |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut, da magst du vielleicht richtig liegen. Aber ich kann se ja n bizel erweitern. Dann ise immer noch kürzer und übersichtilicher ![]() Code: [AUSKLAPPEN] Function trim2$(st$) For a=1 To Len(st$) If Mid$(st$,a,1)<>" " Then s=a : Exit Next For a=Len(st$) To 1 If Mid$(st$,a,1)<>" " Then e=a : Exit Next : Return Mid$(st$,s,e-s) End Function |
||
°_° °.° °~° °v° .. -.- |
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es werden nun nicht nachführende Leerzeichen gelöscht. Und ohne die Zeilen-Trennung per Doppelpunkt : hättest du sogar noch eine Zeile mehr als ich ![]() EDIT: Habs mal überarbeitet: Code: [AUSKLAPPEN] Function trim2$(st$)
For a=1 To Len(st$) If Mid$(st$,a,1)<>" " Then s=a : Exit Next For a=Len(st$) To 1 Step -1 If Mid$(st$,a,1)<>" " Then e=a : Exit Next : Return Mid$(st$,s,e-s+1) End Function Aber von der Idee her, ists ja mein Ansatz. ![]() Nur bei dir fehlt jetzt noch der Sonderfall "" = Leerstring... |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr schön, dann hätte man genau wieder das, was ich hatte bevor ich alles in eine Schleife gepackt habe. Mit der Ausnahme, dass meine Variablen mit Trm_ anfangen ^^
Edit: So, hab jetzt das ganze nochmal genauer unter die Lupe genommen und bin nach reiflicher überlegung zum Schluss gekommen, das ganze wieder in zwei Schleifen zu packen. MfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
so wie alle andern auch? | ||
between angels and insects |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
'schuldigung?
Worauf bezieht sich deine Frage jetzt? ^^ |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group