Baanboard.com

Baanboard.com (http://www.baanboard.com/baanboard/index.php)
-   Deutsches Forum (http://www.baanboard.com/baanboard/forumdisplay.php?f=65)
-   -   Split-Funktion (http://www.baanboard.com/baanboard/showthread.php?t=68853)

MS-Tech 1st May 2016 15:38

Split-Funktion
 
Hallo Zusammen,

gibt es eine "Split" Funktion für einen String, d.h. Ich habe einen kompletten String, der sich aus "String;String;String;String;" zusammensetzt. Jetzt möchte ich gerne diesen String anhand des Separators ";" trennen und ein Array erhalten. Gibt es sowas bzw. wie kann ich sowas auf einfache Art und Weise lösen?

Viele Grüße
MS-Tech

JaapJD 2nd May 2016 08:40

Function string.scan()

andreas.toepper 2nd May 2016 08:41

Das müsste mit der string.scan(..) Funktion zu erledigen sein.

Upps - zu spät.

MS-Tech 2nd May 2016 14:51

Hallo Zusammen,

vielen Dank für die Antworten. Die Funktion sieht ganz gut aus, aber ich muss hier ja das korrekte Format wissen, soweit ich gelesen habe. Was mache ich nun, wenn ich einen String dynamischer Länge habe?

z.B. String;String;String / String;String / String / String;String;String;String etc.

Viele Grüße
MS-Tech

andreas.toepper 2nd May 2016 15:35

Ich habe mir da eine Funktion geschrieben, welche die Daten trennt und in einem Array speichert. Ganz banal zu Fuß: mit POS() das nächste Trennzeichen suchen, abtrennen und dann den Rest wieder mit POS() absuchen, bis nichts mehr da ist.

Code:

        #define                PUFFER_MAXLEN 1024

function void handle.data(string puffer(PUFFER_MAXLEN))
|Aktuelle zeile in Felder aufteielen:
{
        string                field.data(PUFFER_MAXLEN)
        string                rest(PUFFER_MAXLEN)
        long                i, start.pos
       
        rest = puffer
       
       
        start.pos = pos(rest, ";")
       
        I = 0
       
        while len(rest) > 0
                |Aktuelles Feld:
                if start.pos = 0 then
                        field.data = strip$(rest)
                        rest = ""
                else
                        field.data = strip$(rest(1; start.pos - 1))
                endif
                |Rest:
                rest = rest(start.pos + 1; PUFFER_MAXLEN - start.pos)
                |Aktuelles Feld behandeln
                i = i + 1
                |Feld bearbeiten:
                handle.field(field.data, i)
                |Ende von nächstem Feld suchen:
                start.pos = pos(rest, ";")
        endwhile
}

handle.field(..) speichert dann den Wert in einem String (und macht bei mir noch weitere Aufgaben, wie Anführungszeichen entfernen usw.)

MS-Tech 2nd June 2016 11:18

Hallo Andreas,

danke für deine Funktion. Ich war jetzt länger nicht mehr hier und werde diese gleich mal ausprobieren.

Viele Grüße
MS-Tech

bdittmar 7th June 2016 12:59

string.scan()
 
Quote:

Originally Posted by MS-Tech (Post 198100)
Hallo Zusammen,

vielen Dank für die Antworten. Die Funktion sieht ganz gut aus, aber ich muss hier ja das korrekte Format wissen, soweit ich gelesen habe. Was mache ich nun, wenn ich einen String dynamischer Länge habe?

z.B. String;String;String / String;String / String / String;String;String;String etc.



Viele Grüße
MS-Tech

Hallo,

ret = string.scan(inputstring, "%s;%s;%s/%s;%s/%s/%s;%s usw.",string1,string2,string3.........)

Bei dyn. Laenge mit POS, Problem = unterschiedliche separator ?

MFG

MS-Tech 9th February 2017 15:08

Danke für die Funktion. Klappt soweit.

Grüße
MS-Tech


All times are GMT +2. The time now is 18:28.


vB.Sponsors
©2001-2017 - Baanboard.com - Baanforums.com