0

Unzulässige Zeichen setzen oder replace(string," " ","")

Hallo zusammen,

gibt es eine Möglichkeit in Ninox einem Textfeld zu sagen welche Zeichen unzulässig sind? So ein Option vermisse ich.

Ich habe ein Feld in dem keine double quotes also Anführungszeichen " drin sein dürfen. Jetzt kann man das ja nicht mit replace rauskriegen weil replace(string," " ", "") nicht funktioniert Thema "Escape-Sequenz".

Hab keine Möglichkeit gefunden also habe ich eine Funktion geschrieben. 
var newJobname := "";
function validateStrings(Jobname : text) do
let validChars := ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", "!", "ä", "ü", "ö", "Ä", "Ö", "Ü", "&", "+", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
for char in Jobname do
for validChar in validChars do
if char = validChar then
newJobname := newJobname + char
end
end
end;
newJobname
end;
validateStrings(Jobname)


Würd mich echt interessieren ob man das einfacher lösen kann.

10 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Benjamin, ich weiß leider nicht, wie man bei "regex" doppelte Anführungszeichen angibt, aber man könnte den umgekehrten Weg gehen und alle erlaubten Zeichen von der Ersetzung durch "" ausschließen:

     

    Textfeld := replacex(Textfeld, "[^äöüÄÖÜ!&?,. \w]", "")

     

    Oder das Anführungszeichen aus einem (versteckten) Textfeld in eine Variable einlesen und diese beim normalen "replace" als Suchstring angeben. Das müsste eigentlich auch funktionieren:

     

    Suchstring := Suchtextfeld;
    Textfeld := replace(Textfeld, Suchstring, "")

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Gerade noch mal probiert. So müsste es auch gehen:

    Textfeld := replace(Textfeld, """", "")

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    was ist mit:

    *

    replacex(Text, "[""]", "")

    *

    zumindest in Deinem Beispiel bleiben die Einfassungen stehen und alle Anführungszeichen werden gelöscht. Mirko

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ja, das funktioniert genauso wie die vier Anführungszeichen nacheinander. Letztere aber eben auch mit dem normalen "replace".

     

    Was heißt "bleiben die Einfassungen stehen und alle Anführungszeichen werden gelöscht."? Und in welchem Beispiel?

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Da ich nicht so der Experte für reguläre Ausdrücke bin basiert meine Version auf 90% trial and error. Und ich war der Meinung, dass es nur die doppelten Anführungszeichen findet, geht aber auch einfache in meinen Tests. Einfassungen war der falsche Begriff, ich meinte das Eingefaßte ;-). Das Beispiel ist das obige Array, welches ich zum Testen kopiert habe.

    • UweG
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die replacex()-Funktion zum entfernen von doppelten Anführungszeichen und ersetzen durch ein einzelnes Anführungszeichen lautet:

    replacex(Ausgangstext, "[\""]{2}", """")

    • UweG
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hatte nicht vollständig gelesen.

    Alle Anführungszeichen zu entfernen geht mit:

    replacex(Ausgangstext, "[\""]", "")

    • Benjamin_Kromer
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ja replacex(Ausgangstext, "[\""]", "") funktioniert hervorragend.
    Danke Uwe und allen anderen auch.

    • Dev_twentyZen
    • vor 2 Jahren
    • Gemeldet - anzeigen

    I am trying to use replace('E-mail', "<", "") in Trigger after update but this replace function is not working in my case. I actually want to get string between these brackets <email>. Is there any solution for this?

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    replace(extractx('E-mail', "(?=\<)(.*?)(?=\>)"), "<", "")