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
-
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...Ich habe eine Funktion geschrieben, die sich der Funktionalität des Flags "g" annähert...
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
-
Super, klappt einwandfrei, vielen Dank! Schade, dass so etwas nur über den Workaround geht. Viele Grüße
Content aside
- vor 3 JahrenZuletzt aktiv
- 2Antworten
- 250Ansichten