0

Frage zu extractx-Funktion

Liebes Forum,

ich habe folgenden Text der in diesem Muster immer wieder vorkommt und in ein Textfeld eingefügt wird und möchte die Bestandteile in separate Felder aufteilen:

 

Geburtsdatum: JJJJ.MM.DD
Geburtsort: irgendeineStadt
Todesdatum: JJJJ.MM.DD
Todesort: irgendeineStadt

 

ich schaffe es mit extractx das Geburtsjahr (nur das Jahr, ohne Monat oder Tag) auszulesen und in ein separates Feld zu schreiben. Beim Todesdatum scheitere ich aber schon:

extractx(TEXTFELD, "([0-9]){4}", "g", "$0")

wenn ich jetzt

extractx(TEXTFELD, "([0-9]){4}", "g", "$1")

verwende für das Todesdatum, erscheint garnichts.

Wie schaffe ich es, aus dem Textfeld Geburts- und Todesjahr in separate Felder zu schreiben und dann am besten das Gleiche noch mit Geburts- und Todesort.

Schon jetzt herzlichen Dank für die grauen Zellen!

Viele Grüße

2 Antworten

null
    • Sean
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo af,

    Ich denke, das Flag "g" hat in der Ninox-Funktion extractx() noch nie funktioniert. Ich habe eine Korrektur für diese Funktion angefordert, aber Frank dachte nicht, dass sie behoben werden muss...

     

    https://ninox.com/en/forum/ideas-and-suggestions-5abb9f4f45eda7ea1e75ed02/please-fix-the-extract-function-so-flags-will-work-5e25440845dcf70528699a3e

     

    Ich habe eine Funktion geschrieben, die sich der Funktionalität des Flags "g" annähert...

     

    https://ninox.com/de/forum/anwendungsbeispiele-5abd0bb14da2d77b6ebfa396/problemumgehung-fur-das-extractx-g-flag-5fb89dd1a338a87d6a6bb83d

     

    Hier ist eine etwas andere Version...

     

    function extractxg(src : text,regex : text,grp : text) do
    let extValue := "";
    let idx := 0;
    let idxLen := 0;
    while testx(src, regex) do
    idx := index(src, extractx(src, regex));
    idxLen := length(extractx(substr(src, idx), regex));
    extValue := extValue + if grp = "" then
    extractx(substr(src, idx), regex) + ","
    else
    extractx(substr(src, idx), regex, grp) + ","
    end;
    src := substr(src, idx + idxLen)
    end
    ;
    if extValue != "" then
    extValue := substr(extValue, 0, length(extValue) - 1)
    end;
    if extValue != "" then split(extValue, ",") else null end
    end

     

    Es würde so umgesetzt werden:  extractxg(TEXTFELD, "\d{4}", ""). Das Ergebnis ist eine Array von Jahren. Sie können mit der Funktion item() darauf zugreifen.

    Grüße

    • neon_carriage
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Super, klappt einwandfrei, vielen Dank! Schade, dass so etwas nur über den Workaround geht. Viele Grüße

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 2Antworten
  • 243Ansichten