Stringsplitter (Aufteilen von Zeichenketten)
Übersicht

PacManiBetreff: Stringsplitter (Aufteilen von Zeichenketten) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, mein erster Eintrag im Codearchiv ![]() Zitat: Worum geht es?
Wir haben eine Zeichenkette die ungefähr wie folgt aussieht: Code: [AUSKLAPPEN] Dies;ist;ein;Test
Die Zeichenkette soll nun passend zu den Semikolons in ihre Einzelteile zerlegt werden und in einem String-Array gespeichert werden (hier ein Element pro Zeile), die Trennzeichen (Semikolons) entfallen: Code: [AUSKLAPPEN] Dies
ist ein Test Zitat: Wie wird dies erledigt?
Mit diesem Stückchen Code wird unser String in einen passenden String-Array gespeichert, der dann nach Ausführung des Befehls ausgelesen werden kann - ein Beispiel für mehrzeilige Textausgabe findet sich hier drunter: Code: [AUSKLAPPEN] Dim SplitString$(0) ;Initialisierung des Stringarrays das die einzelnen Elemente nach Befehlsausführung enthält
Global SplitCount% ;Enthält die Anzahl der Elemente nach Befehlsausführung ;Funktionskopf - Strng$ ist die aufzuteilende Zeichenkette, SplitChar$ das Trennzeichen (im Bsp. oben ist es das Semikolon) Function Split(Strng$, SplitChar$) SplitCount = 0 ;Diese Schleife durchläuft die Zeichenkette zeichenweise und errechnet wie viele Elemente herausgeteilt werden können For i = 1 To Len(Strng) Local CurChar$ = Mid(Strng, i, 1) If CurChar = SplitChar Then SplitCount=SplitCount+1 Next ;Somit kann nun das Stringarray mit den Einzelelementen korrekt dimensioniert werden Dim SplitString$(SplitCount) Local CurrentSplit% ;Diese Schleife durchläuft die Zeichenkette nun erneut zeichenweise durch und sortiert die Einzelelemente in den Stringarray ein For i = 1 To Len(Strng) CurChar$ = Mid(Strng, i, 1) If CurChar <> SplitChar Then SplitString(CurrentSplit)=SplitString(CurrentSplit)+CurChar Else CurrentSplit=CurrentSplit+1 End If Next End Function Zitat: Wie wende ich die Funktion an?
Das Anwenden der Funktion ist recht simpel. Nach ihrer Ausführung kann man durch Zugriff auf die globalen Variablen jedes Element des Strings einfach durchlaufen - dazu wird auch SplitCount% benötigt: Code: [AUSKLAPPEN] Split("Ich|mag|keine|ganzen|Strings.", "|")
For i = 0 To SplitCount Print SplitString(i) Next Hier aber ein erweitertes Beispiel zur Ausgabe von mehrzeiligem Text (Zeilenumbruch durch "~"), der auch zentriert werden und in seinem Zeilenabstand geändert werden kann: Code: [AUSKLAPPEN] ;x = X-Koordinate des ersten Zeichens der ersten Zeile
;y = Y-Koordinate der ersten Zeile ;strng$ = Zeichenkette die mehrzeilig ausgegeben werden soll (Bsp.: "Ich hasse~einzeiligen Text~ganz doll!") ;centre_x = Zentriert alle Zeilen um die X-Koordinate ;centre_y = Zentriert die Zeilen um die Y-Koordinate ;spacing = Größe des Zeilenabstands, 0 bedeutet normaler Zeilenumbruch ohne Leerraum Function TextMultiline(x, y, strng$, centre_x = False, centre_y = False, spacing = 0) Split(strng, "~") Local CentreHeight% ;Y-Koordinaten bei zentriertem Text, hier nicht von Bedeutung If centre_y Then CentreHeight = (FontHeight()*(SplitCount+1)/2)+(spacing*SplitCount/2) For i = 0 To SplitCount Text x, y+i*FontHeight()+spacing*i-CentreHeight, SplitString(i), centre_x Next End Function Das sollte alles sein! Bei Fragen zum Code bitte private Nachricht schicken ![]() |
||
- Zuletzt bearbeitet von PacMani am Mi, Jun 09, 2010 16:24, insgesamt 7-mal bearbeitet
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bisl suchen: https://www.blitzforum.de/foru...112#198112
Wobei unsere Lösungen recht ähnlich sind.. Bei meinem Algo ist es möglich beliebig viele Trennzeichen zwischen zwei Wörter zu packen. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group