☐ coole neue Funktion
☐ könnte vielen Benutzern helfen!
☐ entfernt etwas, das sich wie ein „Bug“ anfühlt
☑ schön zu haben
☐ niemand braucht es
Was hat Sie zu dieser Wunschliste inspiriert?
Um zu überprüfen, ob ein String Teil eines größeren Strings ist – und um die genaue Position zu ermitteln – kann man contains() verwenden.
Um zu überprüfen, ob ein Element in einer Liste enthalten ist – und um die genaue Position zu ermitteln – kann man contains() verwenden.
So prüfen Sie, ob ein Ausdruck in einem langen Ausdruck vorkommt
... es gibt keine Funktion in JMP/JSL. Es gibt auch keine Funktion, um die Position abzurufen.
Das ist überraschend. Denn es gibt dieses coole
Substitute(Expr(...), Exr(replace), Expr(with))
Dabei muss ermittelt werden, ob und wo ein Ausdruck in einem Hauptausdruck zu finden ist.
Welche Verbesserung würden Sie gerne sehen?
Bitte stellen Sie eine JSL-Funktion bereit, um zu prüfen, ob ein Ausdruck in einem langen Ausdruck vorkommt – und um die Position(en) abzurufen:
Wenn es sich beispielsweise um das 5. Argument des 3. Arguments des 1. Arguments des Hauptausdrucks handelt, könnte die Funktion {{1,3,5}} zurückgeben.
Wenn der Ausdruck an mehreren Stellen gefunden wird, können alle unterschiedlichen Übereinstimmungen zurückgegeben werden.
Wenn es den Ausdruck findet, ihn aber nicht genau lokalisieren kann [weil er nur ein Teil eines Arguments ist], könnte es 1 zurückgeben.
Und wenn der Ausdruck fehlt, könnte er „missing“ zurückgeben.
Warum ist diese Idee wichtig?
Contains(Expr(...), Expr(search)) erleichtert JSL-Skripting.
Es ist leicht mit einer anderen neuen Funktion verwandt, :folded_hands: Expression Indexing: Lese- und Schreibzugriff
weitere Wünsche von 
scheint zu funktionieren:
ContainsExpr=Function ({expression, pattern},
tmp = Substitute(Name Expr(expression), Name Expr(pattern), Expr(.));
not(Name Expr(tmp)==Name Expr(expression))
);
myExpression = Expr({a+b/(x-y),3} );
ContainsExpr( Name Expr(myExpression), Expr(X));
ContainsExpr( Name Expr(myExpression), Expr(c));
ContainsExpr( Name Expr(myExpression), Expr(3));oder über Extract Expr :
ContainsExpr=Function ({expression, pattern},
Not(is empty(Extract Expr(expression, pattern)));
);
myExpression = Expr({a+b/(x-y),3} );
ContainsExpr( Name Expr(myExpression), Expr(X));
ContainsExpr( Name Expr(myExpression), Expr(c));
ContainsExpr( Name Expr(myExpression), Expr(3));Too bad there is no setting for custom functions to NOT evaluate the argument, but just look it up - a magic Ausdruck extrahierenis capable of.
Without this possibility, maybe it's better to learn the Not(is empty(Extract Expr(
... instead of EVERY time having to wrap the arguments with Ausdruck() to save them from getting evaluated.
@Sarah-Sylvestre .
-> Wunsch kann geschlossen werden.