Trim - Ersatzfunktion
Übersicht
BlitzBasic
Codearchiv|
|
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
BlitzBasic
Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group
