0

+49 durch 0 ersetzen

Hallo Zusammen. Wir haben im Ninox ein Telefonfeld in dem Telefonnummern im Format "+49 3443 123 456" eingetragen werden. Folgender Code funktioniert und führt dazu, dass keine Sonder- und Leerzeichen mehr drinnen stehen: 

 

Telefon := replacex(Telefon, "\D", "g", "");

 

Nun möchte ich gerne, dass das "+49" durch "0" ersetzt wird.

Folgenden Code habe ich ausprobiert, der funktioniert aber leider nicht: 

 

Telefon := replacex(Telefon, "+49", "0");

Danke für eure Hilfe :)

13 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Paul, versuch es ohne x:

    Telefon := replace(Telefon, "+49", "0")

    Leo

    • Paul_Krummling
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, funktioniert super, danke!

    Gibt es nun weiterführend noch eine Möglichkeit beide Codes zu verbinden? (Nacheinander funktionieren sie leider nicht): 

    Telefon := replacex(Telefon, "\D", "g", "");

    Telefon := replace(Telefon, "+49", "0")

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Paul,

    einzige Möglichkeit:

    ---

    Telefon := replace(replacex(Telefon, "\D", "g", ""), "+49", "0")

    ---

    • Paul_Krummling
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, leider funktioniert das so, als wenn ich es hintereinander setze. Er nimmt nur die Sonderzeichen raus, und lässt sozusagen die +49 als 49 stehen.

    • Paul_Krummling
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Habs! So funktionierts:

    Telefon := replace(replacex(Telefon, "\D", "g", ""), "49", "0")

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    So wird es aber blöd wenn deine Nummern in der Mitte 49 haben:

    +49 4943 123 4956 -> 0 043 123 056

    dann lieber so:

    ---

    replacex(replace(Telefon, "+49", "0"), "\D", "g", "")

    ---

    Leo

    • Paul_Krummling
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, stimmt, daran hatte ich nicht gedacht. 

    Leider verändert er mit deinem letzten Code nichts.

    • Paul_Krummling
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Gibt es vielleicht eine Möglichkeit, dass er die ersten 3 Stellen austauscht?

    • Paul_Krummling
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich habs, manchmal sieht man echt den Wald vor lauter Bäumen nicht. 

    So rum funktionierts: 

    Telefon := replace(Telefon, "+49", "0");
    Telefon := replacex(Telefon, "\D", "g", "");

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ...nur mal so: bei \D kann es sein, dass unerwünscht auch Leerzeichen, Schrägstriche o.ä. gematcht werden, treffsicher wäre (\+49) mit Gruppierungsklammern und dem Backslash, der das "+" wieder zum Literal umwandelt, weil es ja bei den regulären Ausdrücken eine Funktion hat. Also:

    *

    Telefon := replacex(Telefon, "(\+49)", "g", "")

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielleicht hätte ich mal von Anfang an lesen sollen... Bringt also keinen Mehrwert für Dich.

    *

    replacex(replacex(Telefon, "(\+49)", "g", "0"), "\D", "g", "")

    • Dirk_Wohrle
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wie wäre dann die Formel wenn man genau anders herum die "0" duch die +49 ersetzten möchte?

    Ich hätte sogar noch ein Feld (Land) wo die Länderkennung drin steht. Könnte man das mit abgragen?

    So nach dem Motto "wenn "Land" = "DE" dann ersetzte "0" mit "+49"

    Da ich allerdings nur minimale Datensätze ausserhal Deutschlands habe könnte ich die wenigen notfalls auch von Hand ändern...

    Gruß und danke im vorraus

    Dirk

    • m2apla gmbh
    • Etienne_Scherrer
    • vor 2 Jahren
    • Gemeldet - anzeigen

    @Dirk Das würde so funktionieren:

    let Land := "DE";
    let Telefon := "02384076230984679";
    let vorwahl := "+49";

    switch Land do
    case "DE": vorwahl := "+49"
    case "CH": vorwahl := "+41"
    end;

    replacex(Telefon, "(^0)", vorwahl);

    Resultat: +492384076230984679

    Das "^0" trifft nur zu wenn die 0 am Anfang der Telefonnummer steht, tauscht also nicht auch Nullen in der Mitter der Nummer aus.