0

nur erste Stelle Replace

Hallo zusammen,

ich möchte ein Feld auf eine bestimmte Art und Weise formatieren.

So soll das Kennzeichen-Feld aussehen: B-AB1234E

Die Eingaben durch Personen oder über die API variieren, beispielsweise:

  • B AB 1234 E
  • B AB1234E
  • B AB 1234 E

Gibt es einen Trick, um das erste Leerzeichen durch einen Bindestrich zu ersetzen?

Die Formel Kennzeichen := replace(Kennzeichen, " ", "-") ersetzt leider alle Leerzeichen durch ein Minus. Ich möchte aber nur das erste Leerzeichen ersetzen.

 

DANKE

10 Antworten

null
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Moin ,

    wenn die ersten Zeichen immer B AB sind, geht es so:

    Kennzeichen := replace(Kennzeichen, "B AB", "B-AB")

    VG Ronald

    • mirko3
    • vor 6 Monaten
    • Gemeldet - anzeigen

    ... und wenn sie verschieden sind, dann kannst du das benutzen

    replace(replacex(Text, "\s", "", "-"), " ", "")
    

    Mirko

    • Ninox-Professional
    • planoxpro
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Und noch ne Variante:

    let myT := split(Kennzeichen, " ");
    item(myT, 0) + "-" + join(for i from 1 to length(Kennzeichen) do item(myT, i) end, " ")
      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Deiner geht auch perfekt, hab ihn getestet, aber ein Leerzeichen im obigen Script zu viel kann alles ändern;-)

      ...end, "")
      
      • Ninox-Professional
      • planoxpro
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Ach so, da habe ich wohl nicht richtig gelesen. Dachte, die anderen Leerzeichen sollten erhalten bleiben. Jetzt ist auch klar, warum es für Martin nicht funktioniert hat. Danke für den Hinweis!

    • Martin_Ossadnik
    • vor 6 Monaten
    • Gemeldet - anzeigen

    DAnke 

    der code replace(replacex(Text, "\s", "", "-"), " ", "")

    funktioniert ;)

     

     deiner geht leider nicht. Sehe keine änderung nach Eingabe.

      • Ninox-Professional
      • planoxpro
      • vor 6 Monaten
      • Gemeldet - anzeigen

       

      Bei mir funktioniert der Code. Aber egal, nimm Mirkos, der ist auch eleganter. Meiner wäre nur besser auf andere Zeichen umzubauen gewesen, wenn man sich nicht mit Regex befassen will.

      • Martin_Ossadnik
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Ich würd mich gern mit regex befassen, nur verstehe ich nicht, was dadurch passiert.

      Die Doku hilft mir nicht weiter. 

       

      Ich hab deinen Code nochmal versucht, klappt nicht.

       

      • Ninox-Professional
      • planoxpro
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Der Code war für ein Formelfeld gedacht. Wenn der Ergebniswert per Trigger in ein Datenfeld geschrieben werden soll, muss man ihn  entsprechend zuweisen, z. B. so:

      let myT := split(Kennzeichen, " ");
      Kennzeichen2 := item(myT, 0) + "-" +
          join(for i from 1 to length(Kennzeichen) do
              item(myT, i)
          end, "")

       Wobei sich der Wert auch gleich ins Ausgangsfeld zurückschreiben lässt ("Kennzeichen := ...").

      • Martin_Ossadnik
      • vor 6 Monaten
      • Gemeldet - anzeigen

       aaaaah, dann gehts jetzt auch bei mir ;) Sorry, dann hatte ich das falsch verstanden.

      DANKE!