String/Variable "Trennen" ?

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Kleiner satan

Betreff: String/Variable "Trennen" ?

BeitragSo, Jul 09, 2006 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
kann ich einen string oder eine variable trennen?
beispiel:Code: [AUSKLAPPEN]

aus teil1; teil2; teil3;
wird
teil1
teil2
teil3


Oder gibt es sonst eine möglichkeit in eine datei daten einzuspeichern die man getrennt wider auslesen kann??


Bastian
 

Kaplan

BeitragSo, Jul 09, 2006 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das genau?
"Jedes Ereigniss hinterlässt eine Narbe in der Seele des Beteiligten. Manche sind größer als andere, manche aber teilen deine Seele in Zwei."


User posted image
User posted image
 

Dreamora

BeitragSo, Jul 09, 2006 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
im codearchiv hat es eine StringSplit / StringExplode funktion, die dir das macht, was du möchtest Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

bruce85

BeitragSo, Jul 09, 2006 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
meinst du es vieleicht so?

Code: [AUSKLAPPEN]
teil1$ = "Hallo,"
teil2$ = " was"
teil3$ = " gibts"

Write teil1$
Write teil2$
Write teil3$

Print

Write teil1$
Write teil3$
Write teil2$


Gruss Andreas

PSY

BeitragSo, Jul 09, 2006 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
schätze er meint dass er aus

Code: [AUSKLAPPEN]
string$="Ich*bin*ein*String"



folgendes machen kann

Code: [AUSKLAPPEN]
part(1)="Ich"
part(2)="bin"
part(3)="ein"
part(4)="String"


d.h. er will nen string zerlegen bzw. mehrere informationen in einen string speichern, die er getrennt wieder auslesen will.

das geht z.b. mit der func die dreamora erwähnte.

ansonsten um was abzuspeichern bzw. wieder einzulesen, siehe OH Wink

l8er,
psy

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Jul 09, 2006 23:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein kleines Beispiel:
Code: [AUSKLAPPEN]
TeileUndAusgeben("teil1; teil2; teil3; ",";")
WaitKey
Function TeileUndAusgeben(A$,Teiler$)
   Repeat
      b$ = Left(a$,Instr(A$,Teiler$)-1)
      a$ = Mid(a$,Instr(A$,Teiler$)+1)
      Print Trim(b$)
      If A$ = "" Then Return
      If Instr (A$,Teiler$) = 0 Then ; sind noch Zeichen da ohne Trenner?
         Print  Trim(a$)
         Return
      End If
   Forever
End Function
[BB2D | BB3D | BB+]

Kleiner satan

BeitragMo, Jul 10, 2006 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
PSY hat Folgendes geschrieben:
schätze er meint dass er aus

Code: [AUSKLAPPEN]
string$="Ich*bin*ein*String"



folgendes machen kann

Code: [AUSKLAPPEN]
part(1)="Ich"
part(2)="bin"
part(3)="ein"
part(4)="String"


d.h. er will nen string zerlegen bzw. mehrere informationen in einen string speichern, die er getrennt wieder auslesen will.

das geht z.b. mit der func die dreamora erwähnte.

ansonsten um was abzuspeichern bzw. wieder einzulesen, siehe OH Wink

l8er,
psy


So hab ich es gemeint! so wie in PHP der explode befehl!
gibt es ein tutorial für sowas?

SpionAtom

BeitragMo, Jul 10, 2006 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hab ich mal rausgekramt:

Code: [AUSKLAPPEN]

satz$ = "  Dies ist   ein komischer    Satz mit vielen Leerzeichen  .     "
trenn$ = " "

Print "*" + satz$ + "*"


Dim wort$(50)
w$ = ""
n = 0
For i = 1 To Len(satz$)
   z$ = Mid$(satz$, i, 1)
   If z$ <> trenn$ Then
      w$ = w$ + z$
   Else
      If w$ <> "" Then
         n = n + 1
         wort$(n) = w$
         w$ = ""
      End If
   End If

Next

Print "---"
For i = 1 To n
Print "wort$(" + Str$(i) + ") = " + Chr$(34) + wort$(i) + Chr$(34)
Next

End


Wenn noch was unklar ist, frag nach Wink


EDIT: EDIT:
Und hier noch mal als Function, habs mal eben von QB umgeschrieben:

Code: [AUSKLAPPEN]

   satz$ = "  Dies ist   ein komischer    Satz mit vielen Leerzeichen  .     "


   Print "*" + satz$ + "*"
   For i = 0 To 10
      Print "nowrt$("+i+") = " + Chr$(34) + nwort$(satz$, i) +Chr$(34)
   Next

   WaitKey()
   End





;satz$ ist der zu untersuchende String
;wort gibt an, das wievielte Wort gesucht werden soll
Function nwort$(satz$, wort)
If wort = 0 Then Return ""
trenn$ = " " ;<-- Trennzeichen
w = 0
pos = 1
   While w < wort
      While Mid$(satz$, pos, 1) = trenn$      
      pos = pos + 1
      Wend      
      x = pos
      y = Instr(satz$, trenn$, pos)
      pos = y
      w = w + 1
   Wend
Return Mid$(satz$, x, y - x)
End Function
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 8:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe auch mal eine Explode Function geschrieben, die mit verschieden großen Teilern ohne weiteres klarkommt!
Zusätzlich sind alle Sicherheitsabfragen mit drinn, damit das Prog nicht abstürzt!
Code: [AUSKLAPPEN]
Strin$ = "T1~~T2~~T3~~T4~~T50~~T60~~T700~~T0"
For i = 1 To 8
   Print i +". Teil =  "+ explodeString$ (Strin$,"~~",i)
Next

WaitKey

Function explodeString$ (A$,Teiler$,Num%)
    Local b$, c%=Len (Teiler$)
    Repeat
        Pos% = Instr (A$,Teiler$)
        If Pos% = 0 Then
            If Num = 1 Then
                Return a$
             Else
             Return
            End If
        End If
        b$ = Left (a$,Pos% - 1)
        a$ = Mid (a$,Pos% + c%)
        Num% = Num% - 1
        If Num% = 0 Then Return b$
    Until Len (a$) = 0
End Function

Code geändert!
  • Zuletzt bearbeitet von Rallimen am Di, Jul 11, 2006 9:18, insgesamt einmal bearbeitet

SpionAtom

BeitragDi, Jul 11, 2006 8:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Rallimen hat Folgendes geschrieben:
Hallo, ich habe auch mal eine Explode Function geschrieben, die mit verschieden großen Teilern ohne weiteres klarkommt!
Zusätzlich sind alle Sicherheitsabfragen mit drinn, damit das Prog nicht abstürzt!


Was bei mir auch der Fall ist. Rolling Eyes Wink d.h. bei mir gibt es ein Trennzeichen, das aber beliebig oft hintereinandergeschrieben werden darf.

Bei dir, Rallimen, wird das letzte Wort aber nicht ausgegeben...
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 9:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast recht, dadurch das ich das gekürzt habe ist mir ein Kleiner fehler unterlaufen Sad

Code: [AUSKLAPPEN]
If Nummer = 1 Then ; ist falsch
If Num = 1 Then ; richtig

Habe den Code Ediert!
[BB2D | BB3D | BB+]

Jan_

Ehemaliger Admin

BeitragDi, Jul 11, 2006 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas nennt man Parsen, und ist schon recht vortgeschritten -->
~Verschoben~
Wir brauchen einen gesunden Allgemein bereich, wo mann auch mal was suchen kann.

Übrigens Parsen, ist wichtig, für eigene Programmier/Scriptsprachen,
Exportieren von inhalten aus dateien usw.
between angels and insects

Kleiner satan

BeitragDi, Jul 11, 2006 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm..kann mir jetzt mal einer ein tut geben?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jul 11, 2006 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke mal das du sowas meinst!
http://www.robsite.de/bbkurs2/progs_string.htm
[BB2D | BB3D | BB+]

BtbN

BeitragDi, Jul 11, 2006 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wozu genau willst du ein Tutorial?

Artemis

BeitragDi, Jul 11, 2006 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Tutorial wofür?
 

Dreamora

BeitragDi, Jul 11, 2006 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es keines.
Ist ein fortgeschrittenes und sehr spezifisches Thema.

Dazu gibt es höchstens Artikel wie es funktioniert etc sowie implementationen in C / C++ und anderen "professionel" genutzten Sprachen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Kleiner satan

BeitragDi, Jul 11, 2006 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm
ich raff es immernoch nit!
wozu ist Mid und Len???
 

Nox

BeitragDi, Jul 11, 2006 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.blitzbase.de/befehle2d/mid.htm
http://www.blitzbase.de/befehle2d/len.htm

BladeRunner

Moderator

BeitragDi, Jul 11, 2006 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Manchmal, Satan, sollte man auch erstmal selbst nach Lösungen suchen Wink
Lad Dir die deutsche OnlineHilfe runter (link zB im Beginnerforum in einem der angepinnten Threads) und schau dir die Befehlsbeschreibungen an wenn Du etwas nicht verstehst. Solltest Du dann noch Fragen haben stell sie.
Aber erst mal selbst lernen. Ist auch effektiver.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group