String Parser / Strings aufteilen
Übersicht

![]() |
SpionAtomBetreff: String Parser / Strings aufteilen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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
FroggyBetreff: Re: String Parser / Strings aufteilen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
![]() |
SpionAtomBetreff: Re: String Parser / Strings aufteilen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Und wenn ich nicht so stolz wäre, würde ich sagen, dass ich Replace bis dato nicht kannte ![]() 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. ![]() ~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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group