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
-
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");
-
Funktioniert perfekt. Danke!
-
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)
-
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?
-
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
Content aside
- vor 3 JahrenZuletzt aktiv
- 5Antworten
- 266Ansichten