LlStringTrim/de
LSL Portal | Funktionen | Ereignisse | Typen | Konstanten | Datenflusskontrolle | Script Sammlung | Tutorien |
Beschreibung
Funktion: string llStringTrim( string src, integer type );330 | Funktions ID |
0.0 | Verzögerung |
10.0 | Energie |
Der zurückgegebene String ist src, wobei Leerzeichen (ebenfalls Absätze oder Tabulatoren) am Anfang und/oder Ende entfernt wurden.
• string | src | |||
• integer | type | – | STRING_TRIM* flag(s) |
Konstante | Beschreibung | |
---|---|---|
STRING_TRIM_HEAD | 0x1 | Entfernt Leerzeichen am Anfang. |
STRING_TRIM_TAIL | 0x2 | Entfernt Leerzeichen am Ende. |
STRING_TRIM | 0x3 | Entfernt Leerzeichen an Anfang und Ende. |
Beispiele
Wann immer unstrukturierte Eingaben von einem Nutzer akzeptiert werden - sei es in einer Notizkarte oder via chat - ist es eine gute Idee diese Eingabe zuzuschneiden: <lsl> llStringTrim("Nutzereingabe", STRING_TRIM); </lsl>
Dieses Beispiel gibt die Anzahl von führenden oder endenden Leerzeichen einer Zeichenkette (nicht wirklich nützlich, aber zeigt wie die Funktion genutzt wird). <lsl> default {
state_entry() { llListen(4, "", llGetOwner(), ""); } on_rez(integer a) { llResetScript(); } listen(integer chan, string name, key id, string msg) { //entfernt einfache oder doppelte Anführungszeichen um die Zeichenkette herum if(~llSubStringIndex("'\"", llGetSubString(msg,0,0))) if(llGetSubString(msg,-1,-1) == llGetSubString(msg,0,0)) msg = llDeleteSubString(msg, -1, 0); //speichert die Länge integer length = llStringLength(msg); //schneidet msg zu (nicht notwendig, dies als Variablen zu speichern, aber es übersichtlicher) string trim_left = llStringTrim(msg, STRING_TRIM_HEAD); string trim_right = llStringTrim(msg, STRING_TRIM_HEAD); string trim = llStringTrim(msg, STRING_TRIM);
//gibt die Resultate aus llOwnerSay("Initial length = " + (string)length + "\nLeading Spaces = " + (string)(length - llStringLength(trim_left))+ "\nTrailing Spaces = " + (string)(length - llStringLength(trim_right))+ "\nTrimmed Message = \"" + trim + "\""); }
}
</lsl>Notizen
Neben Leerzeichen am Anfang und/oder Ende, wird die eigentliche Zeichenkette unberührt bleiben. Das bedeutet aber auch, dass zusätzliche ungewollte Leerzeichen innerhalb der Zeichenkette - zum Beispiel versehentlich erstellte doppel-Leerzeichen - nicht korrigiert werden.
Der folgende Code wird alle doppelten, sowie führende und endende Leerzeichen entfernen. <lsl>llDumpList2String(llParseString2List(src, [" "], []), " "); //Funktioniert, kann aber eine große Menge an Speicherkapazität verbrauchen</lsl>