
Einfaches Suchen und Ersetzen
Die Skriptsprache von JMP, JSL, kann Zahlen, Zeichenfolgen und andere Objekte in Variablen speichern. Eine String-Zuweisung könnte so aussehen:
place = "Cary, North Carolina, USA";
Die Variable Ort hält jetzt die Saite. Hier finden Sie eine Reihe von Funktionen zum Arbeiten mit Zeichenfolgen in JSL.Ort behält in allen Beispielen die gleiche Zeichenfolge bei. Regex und Pattern Matching werden in späteren Beiträgen behandelt.
Verkettung - Zwei Saiten Ende an Ende zusammenfügen. Oder mehr als zwei...
sentence = "My home is " || place || ".";
„Mein Zuhause ist Cary, North Carolina, USA.“
Länge - Wie viele Zeichen enthält die Zeichenfolge?
Write( place, " ", Length( place ) );
Cary, North Carolina, USA 25
Enthält - Welcher Teil der Zeichenfolge enthält diesen Text?
positionA = Contains( place, "," );
positionB = Contains( place, ",", 1 + positionA );
Show( positionA, positionB );
PositionA = 5;
PositionB = 21;
Beachten Sie, wie PositionB beginnend mit einem Zeichen nach PositionA gefunden wird. Andernfalls würde das erste Komma an PositionA wiedergefunden werden. Enthält enthält eine Position von 0, wenn die Suche fehlschlägt if( enthält(...), ... ) funktionieren gut.
Substr – Teil der Zeichenfolge, beginnend an einer Position, für eine Länge.
state = Substr( place, 1 + positionA, positionB - (1 + positionA) );
„North Carolina“
Beachten Sie auch das Leerzeichen nach dem ersten Komma. Wenn Sie das Längenargument weglassen, geht substr an das Ende. Es gibt auch eine Regel für eine negative Ausgangsposition:
Substr( place, -3, 2 );
"UNS"
-3 bedeutet, 3 Zeichen vor dem Ende zu beginnen.
Trimmen - Entfernen Sie diese lästigen Leerzeichen
state = trim( state, "left" ); // or "right" or "both"
„North Carolina“
Links – eine bestimmte Anzahl von Zeichen vom linken (vorderen) Ende der Zeichenfolge
Left( place, positionA - 1 );
"Tragen"
positionA ist 5, die Position des ersten Kommas; „Cary“ sind die 4 Zeichen vor dem Komma. Es gibt ein drittes Argument für Fülltext:
Left( "abc", 15, "@#$*" );<BR />
„abc@#$*@#$*@#$*“
Beachten Sie, dass genügend Fülltext hinzugefügt wird, um die angeforderten 15 Zeichen links von „abc“ bereitzustellen. Platz könnte eine bessere Wahl für den Füller sein. Ohne den Füller ist das Ergebnis nur „abc“.
Rechts – eine bestimmte Anzahl von Zeichen vom rechten (hinteren) Ende der Zeichenfolge
Right( place, 3 ); // like Left, there is a fill option
"USA"
Verwenden Sie Substr anstelle von right, wenn Sie eine Position haben
Substr( place, positionB + 2 ); // +2 goes past the comma and the space
"USA"
Substr erfordert keinen dritten Wert für die Länge; es wird bis zum Ende gehen.
Du könnte Verwenden Sie Right mit einer Position und der Längenfunktion, aber wenn Sie erst einmal erklärt haben, wie man eine Position von einer Länge subtrahiert, wird es schon komplizierter sein.
Munger - Alleskönner...
Munger mischt Suchen und Ersetzen zusammen. Es ist nicht so clever oder bekannt wie Regex, aber einfacher zu verstehen, wenn man erst einmal den Dreh raus hat. Ohne ein Handbuch kann niemand sonst herausfinden, was Ihre JSL tut, also sollten Sie es vielleicht überspringen.
result = Munger( source, startPosition, textOrLength, optionalReplacementText );
Hier ist eine Tabelle, die versucht, die verschiedenen Kombinationen von textOrLength und optionalReplacementText zu erklären. Alle Beispiele verwenden 3 als Startposition und überspringen das anfängliche „ab“. Beachten Sie das vierte Beispiel, in dem das zweite „b“ gefunden wird.
| |
kein Ersatz |
Ersatztext = „$*?“ |
| Munger("abcabc", 3, 2, ? ) |
„ca“ |
„ab$*?bc“ |
| Munger("abcabc", 3, 0, ?) |
„“ |
„ab$*?cabc“ |
| Munger("abcabc", 3, 99, ?) |
„Cabc“ |
„ab$*?“ |
| |
|
|
| Munger("abcabc", 3, "b", ?) |
5 |
„abca$*?c“ |
| Munger("abcabc", 3, "Q", ?) |
0 |
„abcabc“ |
| Munger("abcabc", 3, "", ?) |
0 |
„abcabc“ |
Wenn man lange genug darauf starrt, sind alle Ergebnisse sichtbar nützlich auf selbstkonsistente Weise. Wenn kein Text zu finden ist, sondern nur eine Länge, gibt Munger die Teilzeichenfolge zurück. Wenn Ersatztext vorhanden ist, wird das Original mit ersetzter Teilzeichenfolge zurückgegeben. Wenn jedoch Text gefunden werden muss, gibt es keinen Grund, den gefundenen Text zurückzugeben. Wenn also kein Ersatztext vorhanden ist, erhalten Sie die Position des gefundenen Texts. Wenn ein Ersatztext vorhanden ist, erhalten Sie die ursprüngliche Zeichenfolge mit der ersetzten Teilzeichenfolge. Der seltsame Fall ist die letzte Zeile, die Ihren Erwartungen hinsichtlich der Suche nach einer leeren Zeichenfolge möglicherweise nicht entspricht. Verwenden Sie auch keine negativen Positionen und Längen. Sie tragen hier nicht zur Klarheit bei und funktionieren nicht wie substr().
Beispiel
Spaltenformeln in Datentabellen können einen Wert aus einer anderen Spalte berechnen. Hier ist ein „Nachname, Vorname“-Beispiel, bei dem davon ausgegangen wird, dass das Komma ein eindeutiges Trennzeichen ist. Dieses Beispiel funktioniert für den Fall „onlyname“, da Left jede Länge außerhalb des zulässigen Bereichs als alles interpretiert. Suchen Sie nach dem Regex-Beitrag, er gefällt Ihnen vielleicht besser.
Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Column formula using Left() and Contains()Spaltenformel mit Left() und Contains()
Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Column formula using substr() and contains()Spaltenformel mit substr() und contains()
Bearbeiten 30. September 2017: Formatierung reparieren