String Parser / Strings aufteilen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

SpionAtom

Betreff: String Parser / Strings aufteilen

BeitragDi, Jul 11, 2006 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
So hier meine Parserfunktion. Sollte mit allen Eventualitäten von Eingaben klar kommen. Die Anzahl der Trennzeichen zwischen zwei Wörtern können beliebig sein.

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, trenn$ = " ")
If wort < 1 Then Return ""
satz$ = satz$ + trenn$
w = 0
pos = 1
   While w < wort And pos > 0
      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
  • Zuletzt bearbeitet von SpionAtom am So, Aug 09, 2009 9:53, insgesamt einmal bearbeitet
 

Froggy

Betreff: Re: String Parser / Strings aufteilen

BeitragMi, Jul 12, 2006 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum machst du es nicht so? :

Code: [AUSKLAPPEN]

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

While Left(satz,1) = " "
satz = Mid(satz,2)
Wend

While Right(satz,1) = " "
satz = Left(satz,Len(satz)-1)
Wend

While Replace(satz,"  "," ") <> satz Or Replace(satz,"   "," ") <> satz Or Replace(satz," .",".") <> satz Or Replace(satz," ,",",") <> satz Or Replace(satz," !","!") <> satz Or Replace(satz," ?","?") <> satz
satz = Replace(satz,"  "," ")
satz = Replace(satz,"   "," ")
satz = Replace(satz," .",".")
satz = Replace(satz," ,",",")
satz = Replace(satz," !","!")
satz = Replace(satz," ?","?")
Wend

Print satz
WaitKey
End

SpionAtom

Betreff: Re: String Parser / Strings aufteilen

BeitragMi, Jul 12, 2006 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Froggy hat Folgendes geschrieben:
Warum machst du es nicht so? :


Klar, ist eine Möglichkeit. Aber wenn ich arschig wäre, würde ich sagen, dass sich die Laufzeit dadurch vergrößert Wink

Und wenn ich nicht so stolz wäre, würde ich sagen, dass ich Replace bis dato nicht kannte Laughing

Und wenn ich normal wäre, würde ich sagen, dass es einfach nicht nötig ist. Und ich glaube, das ist auch so schon die schnellste Lösung. Der Algorithmus geht solange (und maximal einmal durch) den String durch, bis das gewünschte Wort gefunden ist. Exclamation

~EDIT~ Jetzt, wo ich mir deinen Code näher betrachtet habe, merke ich, dass dieser Code, meine Absicht, dass n-te Wort auszugeben, gar nicht unterstützt (nicht bös gemeint). Du machst lediglich einen ansehnlichen Satz daraus. Bei mir geht es aber nicht nur um Geschriebene Sätze mit Punkten und Kommas, es geht um allgemeine Strings, die können auch so aussehen " DAT PIK VAL CLS " - und egal wieviele Leerzeichen dazwischen stehen, VAL ist und bleibt das dritte Wort.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group