In Diskussion Manueller Workflow Regex

Svenka

Sehr aktives Mitglied
24. August 2018
357
72
Moin,

ich möchte mit einem manuellen Workflow ein Artikelattribut manipulieren. Es handelt sich um eine Kommaseparierte Liste von Strings, aus denen ich einen String löschen möcht. Als bspw:

String1,String2,String3,String4

Ich dachte ich könnte einfach
{{ Vorgang.Attribute.meinshop_de. Shopify-Attribute.tags.Einsprachig | Replace: '\,String3', '' }

verwenden. Das funktioniert aber leider nicht.

Hat jemand eine Idee?
 

Steffen80

Sehr aktives Mitglied
27. August 2012
478
104
Wir hatten ein ähnliches Problem mit DOTLIQUID in den Mailvorlagen Empfänger.
Bei uns hat es dann mit assign und Replace funktioniert. Variable kannst dann einfach ausgeben.

Versuch mal:
{% assign Ausgabe = Vorgang.Attribute.meinshop_de. Shopify-Attribute.tags.Einsprachig | Replace: '\,String3','' %}\
{{Ausgabe}}
 

Steffen80

Sehr aktives Mitglied
27. August 2012
478
104
hmm Ok. Dann müssten mal die DOTLIQUID spezies ran...

Du kannst nochmal REPLACEFIRST oder REMOVE versuchen, aber das er die komplette Liste leert ist merkwürdig.
Ansonsten gibts die Möglichkeit mit REGEX und REPLACE zu arbeiten.

Als Beispiel unser CODE mit REGEX bei dem nur REPLACE funktioniert und nicht REMOVE (bin hier auch überfragt warum):
{% assign Mail1 = Vorgang.Kunde.EigeneFelderAlsText | Replace: '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}','' %}\

REGEX kannst hier testen:
https://regex101.com/

Hilfeseite für DOTLiquid Filter:
https://guide.jtl-software.com/jtl-wawi/vorlagen/standardfilter-in-dotliquid/
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.873
562
Ich empfehle ja gerne, alles was ein bisschen komplexer als "gib den Wert aus der Datenbank aus" ist vom SQL-Server machen zu lassen:
In dem Fall also so etwas wie:
Code:
{% capture query %}
SELECT REPLACE('String1, String2, String3, String4', 'String3, ', '');
{% endcapture %}

{% assign result = query | DirectQueryScalar %}
{{ result }}