SKRIPT KURS Lektion [ 3 / 4 ]

Wer sich gern Migraene abholen moechte, bitte hier entlang: http://wiki.secondlife.com/wiki/LlParseString2List

Lektion [ 3 / 4 ]

Ich versuche es mal etwas einfacher, ohne verwirrenden wichtig aussehenden Schnik Schnak.
list llParseString2List(string src, list separators, list spacers);
 ist ueberall anwendbar.
Mit Hilfe dieses Befehls, lassen sich Strings zu einer Liste zerlegen und die Elemente einzeln abrufen und erzeugt eine neue Liste.
Parse String 2 List bedeutet im groben Vergleiche einen String als Liste.
Bei der ersten Variable handelt es sich um den vollstaendigen String.
Die zweite Variable steht duer die trennung der jeweiligen Elemente. Haeufig werden Leerschritte verwendet. Der Seperator kann natuerlich alles sein, doch fuer unsere Zwecke reicht vorerst der [" "] Leerschritt.
Variable Nummer 3 trennt die einzelnen Elemente an der angegebenen Stelle. Habe ich allerdings noch nie benoetigt. Deshalb verwende ich immer eine leere [] Liste.

Im folgenden Beispiel lege ich einen String Global an, um das Experimentieren zu erleichtern.
Der String besteht aus 2 Woertern, Wort 1 = Text, Wort 2 = 1
Da sich beide Elemente im Selben String befinden ist die Zahl 1 in diesem Fall kein Integer.


Code:
string IrgendEinText = "Text 1";

default
{
    state_entry()
    {
   
    }

    touch_start(integer total_number)
    {
        list ParsedName = llParseString2List(IrgendEinText, [" "], []);
        string Name = llList2String(ParsedName, 0);
        string Nummer = llList2String(ParsedName, 1);
   
        llSay(0, "IrgendEinText erster Teil: " + Name);
        llSay(0, "IrgendEinText zweiter Teil: " + Nummer);
    }
}
Bis zu 8 Elemente lassen sich zu einer Liste parsen (bearbeiten ).
Das bedeutet, ihr koennt ganze Saetze mit bis zu 8 Woertern hiermit zerlegen.
Dazu wird dann lediglich fuer jedes Element ein llList2String von 0 - 7 Benoetigt.

llList2String(list VariablenListe, integer Stellenwert); ist gleich unter der list parse verwendbar.
Die erste Variable ist die Liste, welche ihr mit llParseString2List anlegt.
Mit der zweiten Variable bestimmt ihr den Stellenwert, welchen ihr abrufen moechtet.

Hier noch ein Beispiel mit 8 woertern:
Code:
string IrgendEinText = "Ein ganzer Text bestehend aus acht einzelnen woertern";

default
{
    state_entry()
    {
       
    }

    touch_start(integer total_number)
    {
        list ParsedName = llParseString2List(IrgendEinText, [" "], []);
        string text1 = llList2String(ParsedName, 0);
        string text2 = llList2String(ParsedName, 1);
        string text3 = llList2String(ParsedName, 2);
        string text4 = llList2String(ParsedName, 3);
        string text5 = llList2String(ParsedName, 4);
        string text6 = llList2String(ParsedName, 5);
        string text7 = llList2String(ParsedName, 6);
        string text8 = llList2String(ParsedName, 7);
       
        llSay(0, "IrgendEinText erster Teil: " + text1);
        llSay(0, "IrgendEinText zweiter Teil: " + text2);
        llSay(0, "IrgendEinText dritter Teil: " + text3);
        llSay(0, "IrgendEinText vierter Teil: " + text4);
        llSay(0, "IrgendEinText fuenftrer Teil: " + text5);
        llSay(0, "IrgendEinText sechster Teil: " + text6);
        llSay(0, "IrgendEinText siebter Teil: " + text7);
        llSay(0, "IrgendEinText achter Teil: " + text8);
    }
}


 Bei dem Limit von 8 Seperatoren und 8 Spacern ist nicht gemeint, das man nur 8 Elemente aus einem String filtern kann, sondern das man maximal 8 verschiedene Seperatoren und 8 verschiedene Spacer gleichzeitig in einem Befehl nutzen kann. Die Laenge des Strings spielt dabei keine Rolle.

Das wuerde dann so aussehen:

Code:
llParseString2List(IrgendEinText, [" ", "=","@","€","&","$","§","%"], []);
In der Regel reicht mir jedoch nur ein Seperator.


Auch hier wuensche ich euch viel Spass beim experimentieren.



LG
Dae
Auch hier wuensche ich euch viel Spass beim experimentieren.



Kommentare