Autor Thema: führende "0" aus Textfeld entfernen  (Gelesen 5415 mal)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
führende "0" aus Textfeld entfernen
« am: 17.12.13 - 09:49:17 »
Hallo zusammen,

ich habe ein bearbeitbares Textfeld.
Wie kann ich über die Eingabeumsetzung (also mit Formel) führende "0" entfernen?
Bsp.:
Eingabe = "00012AB30X45"
Erwartetets Ergebnis = "12AB30X45"

Bin für Tipps und Anregungen dankbar.

Danke und Grüße
Stefan
« Letzte Änderung: 17.12.13 - 10:33:13 von cebolina »
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: führende "0" aus Textfeld entfernen
« Antwort #1 am: 17.12.13 - 10:09:58 »
wieviele 0en können vorkommen?

Folgende Formel wäre für 4 Stück

Ausgabe := @ReplaceSubstring("~"+Eingabe; "~0000":"~000":"~00":"~0":"~"; "")

Und folgende für 8:

tmp := @ReplaceSubstring("~"+Eingabe; "~0000"; "")
Ausgabe := @ReplaceSubstring("~"+tmp; "~0000":"~000":"~00":"~0":"~"; "")

Über eine Schleife wohl auch generisch lösbar.
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline WildVirus

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 658
  • Geschlecht: Männlich
Re: führende "0" aus Textfeld entfernen
« Antwort #2 am: 17.12.13 - 10:10:49 »
Moin Stefan

mit einer While left(Eingabe, 1) = 0 Schleife in der Du dann Eingabe um eine Stelle kürzt

CU,
Axel

Offline udo187

  • Junior Mitglied
  • **
  • Beiträge: 98
Re: führende "0" aus Textfeld entfernen
« Antwort #3 am: 17.12.13 - 10:19:48 »
Hallo !



@For(x := 1 ;  x < @Length(test1) ; x := x + 1;
@If(
@Right(@Left(Test1;x);1) = "0";
@Success;
@return(@Right(test1;@Length(test1) - (x-1)))
)
)

...wobei test1 ist dein Feld.

Gruss
Udo

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: führende "0" aus Textfeld entfernen
« Antwort #4 am: 17.12.13 - 10:31:27 »
wieviele 0en können vorkommen?
soviele wie der User einträgt ;-) - also unbekannt.

Die Formel von Udo funktioniert einwandfrei - Danke!

Gruß Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline udo187

  • Junior Mitglied
  • **
  • Beiträge: 98
Re: führende "0" aus Textfeld entfernen
« Antwort #5 am: 17.12.13 - 10:51:39 »
Hallo !

Noch eine kleine Korrektur:

- Wenn nur eine Stelle eingegeben wird
- x ist kleiner oder gleich der Länge

@If(test1 = "0";@Return("");@Success);

@For(x := 1 ;  x <= @Length(test1) ; x := x + 1;
@If(
@Right(@Left(Test1;x);1) = "0";
@Success;
@return(@Right(test1;@Length(test1) - (x-1)))
)
 )


Gruss
Udo

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: führende "0" aus Textfeld entfernen
« Antwort #6 am: 17.12.13 - 11:18:36 »
wieviele 0en können vorkommen?
soviele wie der User einträgt ;-) - also unbekannt.
Klar ;)
Mach dann auch noch einen Trim, nicht dass ein User "  00012345" eingibt

Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: führende "0" aus Textfeld entfernen
« Antwort #7 am: 17.12.13 - 11:43:08 »
@Udo
Danke für den ergänzenden Hinweis.
Die Erfassung von "0" ist zwar sehr unwahrscheinlich, aber man weiß ja nie.

@pram
Trim ist eh schon dabei, aber Danke für den Hinweis.

Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Tim Pistor

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
    • www.pistor.is - Tim Pistor IT-Beratung
Re: führende "0" aus Textfeld entfernen
« Antwort #8 am: 17.12.13 - 12:09:29 »
Auch noch was
Code
p := "~";
v := @ReplaceSubstring(@Trim(@ThisValue); p; "");
@While( @Begins( v ; "0" ) ; v := @RightBack(  p + v;  p + "0"));
v

Edit: "p" ist ein beliebiges Zeichen das bei der Eingabe nicht vorkommen darf und rausgefiltert wird.
« Letzte Änderung: 17.12.13 - 12:15:02 von Tim Pistor »

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: führende "0" aus Textfeld entfernen
« Antwort #9 am: 17.12.13 - 13:47:46 »
Auch noch was
Code
p := "~";
v := @ReplaceSubstring(@Trim(@ThisValue); p; "");
@While( @Begins( v ; "0" ) ; v := @RightBack(  p + v;  p + "0"));
v

Edit: "p" ist ein beliebiges Zeichen das bei der Eingabe nicht vorkommen darf und rausgefiltert wird.

Sehr elegant!

Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Tim Pistor

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
    • www.pistor.is - Tim Pistor IT-Beratung
Re: führende "0" aus Textfeld entfernen
« Antwort #10 am: 17.12.13 - 17:25:53 »
Speicherplatz ist teuer, drum noch eine Sparversion:

Code
v := @Trim(@ThisValue);
@While( @Begins( v ; "0" ) ; v :=@Trim(@Middle(v; 1; @Length(v))));
v

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: führende "0" aus Textfeld entfernen
« Antwort #11 am: 18.12.13 - 07:55:53 »
Speicherplatz ist teuer, drum noch eine Sparversion:

Code
v := @Trim(@ThisValue);
@While( @Begins( v ; "0" ) ; v :=@Trim(@Middle(v; 1; @Length(v))));
v

noch eleganter - Danke!
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: führende "0" aus Textfeld entfernen
« Antwort #12 am: 07.01.14 - 16:33:24 »
Ein gesundes Neues Jahr wünsch' ich!

@cebolina
Für den Fall, daß man keine Schleifen mag oder einsetzen will und t den getrimmten Ausgangswert enthält (z.B. t := @Trim(@ThisValue)), könnte man so an die Sache herangehen:

x := @Explode(t;"0");
n := @Left(t;@Subset(x;1));
r := @Right(t;n);

Wie funktionierts:
- "0" wird als Trennzeichen beim @Explode verwendet --> x
- links vom Inhalt des ersten Elements der Liste x stehen in t alle führenden Nullen --> n
- rechts von n steht in t der ganze Rest ohne die führenden Nullen --> r

Das "Verhübschen" überlasse ich Dir - Du weißt am besten, welche Sonderfälle sich Deine fleißigen Nutzer für Dich ausdenken ;)

Offline Tim Pistor

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
    • www.pistor.is - Tim Pistor IT-Beratung
Re: führende "0" aus Textfeld entfernen
« Antwort #13 am: 07.01.14 - 17:00:01 »
In diesem Beispiel muss aber zwingend eine führende "0" geliefert werden?

Aus "0123" wird "123". Aus "123" wird "" - Abhilfe:

Code
t := "0" + @Trim(@ThisValue)

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: führende "0" aus Textfeld entfernen
« Antwort #14 am: 07.01.14 - 17:16:34 »
@Tim
Ich habe nur die Grundidee aufgeschrieben, korrekt. Mit ein bischen Drumherum wär's dann z.B.:

t := @Trim(@ThisValue);
x := @Explode(t;"0");
n := @Left(t;@Subset(x;1));
r := @Right(t;n);
ergebnis := @If(@Left(t;1)="0";r;t);

Sprich: wenn in t keine führende Null ist, dann wird t selbst das Ergebnis. In der letzten Zeile kann man dann r natürlich noch durch wiederholtes Einsetzen in einen langen Formelsprachebandwurm verwandeln ;) und hat nur eine einzige Zeile. Ich finde aber, das man sowas schlecht lesen kann.

Da ich nicht weiß, wieviel und welches Drumherum cebolina braucht, kann er sich das ja selber haargenau auf seine Bedürfnisse anpassen. Genau eine "0" als Eingabe wurde schon diskutiert. Dann kämen mir noch Leerzeichen mitten im String in den Sinn (Nutzer ist aus Versehen auf die Leertaste gekommen und hat es gar nicht bemerkt...). Sicher gibt's auch noch andere Prüfungen, die cebolina einbauen möchte. Minimale/maximale Länge des Strings, ein bestimmter Aufbau... usw.

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: führende "0" aus Textfeld entfernen
« Antwort #15 am: 08.01.14 - 10:25:14 »
Nochmal Danke für die vielen Anregungen und Tipps.

In meinem konkreten Fall ging es um die Eingabe von Kontonummern und deren Konvertierung in IBAN.
Es müssen tatsächlich nur führende "0" herausgefiltert werden. Innerhalb einer Kontonummer können durchaus "0" enthalten sein (Bsp.: 1230012).
Deutsche Kontonummern dürfen max. 10-stellig sein, können aber auch kürzer sein. Da ein User allerdings auch "0001230012" erfassen könnte, brauchte ich eben eine Funktion, um diese führenden "0" zu entfernen.
Versehentliche Leerzeichen werden vor der IBAN-Konvertierung sowieso mit @Trim und @ReplaceSubstring herausgefiltert.

Letztlich habe ich die Version von Tim Pistor verwendet.

Gruß Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz