0

Dateiname splitten

Hallo liebe Ninox-Gemeinde,

ich habe ein Problem und hoffe ihr könnt mir helfen. Ich würde gerne einen Dateinamen mit einer Formel auswerten um sie weiter zu verarbeiten.

der Dateiname ist immer gleich aufgebaut: mysite.de - Bestellung 2021-01-26 876-5643737-0410769.pdf

Lösen tu ich es mit folgendem Code:

let BNr := last(split(text('Bestellübersicht'), "/"));
let y := extractx(BNr, "([0-9]+)\-([0-9]+)\-([0-9]+)", "i", "$1");
let m := extractx(BNr, "([0-9]+)\-([0-9]+)\-([0-9]+)", "i", "$2");
let d := extractx(BNr, "([0-9]+)\-([0-9]+)\-([0-9]+)", "i", "$3");
let b := extractx(BNr, "([0-9]+)\-([0-9]+)\-([0-9]+)\ ([0-9]+)\-([0-9]+)\-([0-9]+)", "g", "$4-$5-$6");
Bestellnummer := b;
Bestelldatum := d + "." + m + "." + y

Funktioniert auch wunderbar, bis auf: Wenn die erste Ziffer nach dem Datum ein Buchstabe ist mysite.de - Bestellung 2021-01-26 A76-5643737-0410769.pdf

 

Kennt da jemand eine Lösung? Vielleicht auch wesentlich eleganter als meine?

Besten Dank

5 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    dann setze bei b noch die Suche nach keinem oder einem Großbuchstaben ein...

     

    ([0-9]+)\-([0-9]+)\-([0-9]+)\ ([A-Z]?[0-9]+)\-([0-9]+)\-([0-9]+)

     

    also 

     

    let b := extractx(BNr, "([0-9]+)\-([0-9]+)\-([0-9]+)\ ([A-Z]?[0-9]+)\-([0-9]+)\-([0-9]+)", "g", "$4-$5-$6");

    • Johannes_B
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Funktioniert perfekt. Danke!

    • Sean
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Darf ich eine Alternative anbieten...

     

    let aryOrder := split(extractx(BNr, "(\d+)-(\d+)-(\d+) (\w+-\d+-\d+)", "$1,$2,$3,$4"), ",");
    let y := item(aryOrder, 0);
    let m := item(aryOrder, 1);
    let d := item(aryOrder, 2);
    let b := item(aryOrder, 3)

    • Johannes_B
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Sean,

    das ist natürlich viel kompakter. Kannst du mir verraten was die \d+ und \w+ bewirken? Falls man sie mal woanders einsetzen möchte?

    • Sean
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Johannes,

    \d+ steht für eine oder mehrere Ziffern. \w+ steht für einen oder mehrere ASCII-Buchstaben, Ziffern oder Unterstriche. Ich mag diese Kurzanleitung, weil ich nicht jeden Tag Regex verwende, https://www.rexegg.com/regex-quickstart.html