0

Ist Zahl?

Guten Abend Forum.

Ich habe ein Textfeld, in dem Positionsnummern aus Leistungsverzeichnissen stehen. Das sieht z.B. so aus: 1.02.003. Die einzelnen Elemente dieser Position möchte ich neu formatieren, z.B. umwandeln in 001.002.0003. Das klappt auch wunderbar, solange die einzelnen Elemente reine Zahlen sind. Manchmal kommt aber eine Positionsnummer so daher: 1.02.003a. Bevor ich die Elemente neu formatiere, müsste ich einfach wissen, ob es sich um eine Zahl handelt. Das ist bei "003a" ja definitiv nicht der Fall. Die Funktion number("003a") gibt aber "0" zurück. Das reicht mir nicht, weil es auch Positionsnummern mit Nullen gibt, z.B. 1.00.003.

In Excel gibt es eine Funktion, die heißt "IstZahl" und gibt true oder false zurück. Haben wir so etwas auch in Ninox oder hat jemand eine Idee, wie man die Funktion nachbaut?

Ich stehe da echt auf dem Schlauch...

Viele Grüße, Jörg

6 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Jörg. Workaroundidee:

    *

    if replacex(Text, "\d+", "IstZahl") = "IstZahl" then
    true
    else
    false
    end

    *

    Mirko

    • Joerg.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Mirko.

    Vielen Dank für diese Idee. Sie ist ab sofort eine globale Funktion in meiner Datenbank. Ich nutze tatsächlich bei der Verarbeitung von Positionsnummern Regular Expressions, allerdings bisher nur die "testx" Funktion. Das hier ist aber echt stark: wandle alle Zahlen in den String "IstZahl" um! Und zwar in beliebiger Reihenfolge, es funktioniert nicht nur mit "1a" und "A1", sondern auch mit "1a10".

    Ich wünsche dir einen schönen Tag

    Jörg

    • Universität Bonn
    • Reinhard_Zollner
    • vor 2 Jahren
    • Gemeldet - anzeigen

    if num(Text) = Text then ... else ... end

    • Universität Bonn
    • Reinhard_Zollner
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Entschuldigung ... korrekt wäre natürlich:

    if number(Text) = Text then ... else ... end

    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Klasse. Die Welt kann so einfach sein. if number(TEXTFELD) then true else false end.

    • Joerg.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Danke, Reinhard. Deine Lösung hatte ich bereits ausprobiert, sie aber verworfen, weil "1." eben auch eine Zahl ist. Das konnte ich in meinem speziellen Fall nicht gebrauchen. Aber die Lösung ist, genau wie die zweite von Mirko, für normale Zahlen (also mit Dezimaltrenner) sehr gut.

    Viele Grüße, Jörg

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 6Antworten
  • 328Ansichten