0

Texte in anders Feld übertragen ohne Zahlen

Hallo

 

Ich bitte um Eure Hilfe, da ich leider nicht weiterkomme

 

Ich habe ein mehrzeiliges Textfeld indem sich Text, Zahlen und () befinden.

Beispiel:

 

Name (1), Bezeichnung (3), Lager (9), usw

Die Zahlen gehen von 0 - 9, und es können sich mehrere in Klammern befinden

 

Ist es möglich den Text automatisch in ein anderes Textfeld kopieren zu lassen ohne Zahlen und ohne Klammern?

Idealerweise sogar so, dass alles in den Klammern gleich mit weg ist? (da befinden sich je nachdem wie viele Zahlen sich in der Klammer befinden, auch einige Komas, die ich  nicht brauche) (Das könnte ich aber auch anders lösen.

Ideal wäre einfach dass ich die Klammern und Zahlen im anderen Feld nicht sehen würde

 

Danke und Gruss 

12 Antworten

null
    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Das sollte über replacex() und die richtigen RegEx Ausdrücke klappen:

    NEUES_TEXTFELD := replacex(ALTES_TEXTFELD,"\(\d+\)","")

    Das sucht nach "Klammer auf" gefolgt von einer "ein- oder mehrstelligen Zahl" gefolgt von einer "Klammer zu" - und ersetzt diese mit nix ""

    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    oder via folgendem Code einfach alles innerhalb von Klammern...

    NEUES_TEXTFELD := replacex(ALTES_TEXTFELD,"\(\.\)","")
      • T_Bartzsch
      • vor 1 Jahr
      • Gemeldet - anzeigen
      NEUES_TEXTFELD := replacex(ALTES_TEXTFELD,"\(.\)","")

      muss es heißen... sorry

    • roger_j
    • vor 1 Jahr
    • Gemeldet - anzeigen

    danke sehr.

    Ich werde das heute abend gleich testen :)

     

    gruss

    • roger_j
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo

     

    Ich Danke für deine Inputs.

    Leider führt es aber nicht zum gewünschten Ergebnis

    Ich habe gestern Abend und heute morgen versucht herauszufinden woran es liegt, bin aber bis anhing nicht weitergekommen. Daher melde ich mich nochmals

     

    Der Code:

    NEUES_TEXTFELD := replacex(ALTES_TEXTFELD,"\(.\)","")

     

    Dieser entfernt wohl die Klammer und den Inhalt, aber nur dann, wenn in der Klammer nur 1 Zahl steht. Sobald ein Komma oder mehrere Zahlen, abgetrennt mit Kommas, stehen, tut sich leider nichts.

    Aber das der Komplette Inhalt inkl. den Klammern ersetzt wird durch nichts, wäre der Idealfall.

     

    Was übersehe ich?

    Ich habe den Code genau so übernommen:

    neue_Lagerzuordnung := replacex(Lagerzuordnung,"\(.\)","")

     

    Danke und Gruss

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Roger J hab keinerlei Ahnung davon, aber es geht so.  Einmal nach zahlen suchen, wenn dann ne leere klammer steht wird die im zweiten schritt entfernt.

      let aa := replacex(Text, "\(\d+\)", "");
      replacex(aa, "\(\)", "")
      
    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Roger,

     

    du musst den für dich passenden RegEx Befehl finden. Dafür musst Du genau wissen, was in deinem Text alles vorkommen kann.  Natürlich lassen sich wie Michi schon schreibt auch replace-Funktionen verschachteln...

    Wenn in deinem Text sonst kein Komma vorkommt, kannst du auch erst alle Kommata entfernen replace(DEINTEXT, ",","") und die verbliebenen Klammern mit Zahlen via replacex entfernen:

    neue_Lagerzuordnung := replacex(replace(Lagerzuordnung, ",", ""),"\(\d+\)","")
    • roger_j
    • vor 1 Jahr
    • Gemeldet - anzeigen

    danke Euch

    Schau ich mir gerne heute Abend an und versuch wieder weiter zu kommen :)

    Grundsätzlich weiss ich im Vornhinein was entfernt werden soll: Das sind Zahlen, Kommas und runde Klammern (auf und zu)

    Die Ideallösung wäre: Alles was sich IN Klammer, zb: (1,2,4,6,9) befindet soll inkl. den Klammern entfernt werden. Aber das geht so wohl nicht.

     

    Danke für Eure Hilfe und Gruss

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    So müßte es gehen

    replacex(Text, "\(.+\)", "")
    • roger_j
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Guten morgen

     

    Super!

    Ich danke Euch allen für die Unterstützung!

     

    Das war die Lösung die ich gesucht habe! Funktioniert wunderbar :)

    neue_Lagerzuordnung := replacex(replace(Lagerzuordnung, ",", ""),"\(\d+\)","")

     

    Bei dieser Lösung: 

    replacex(Text, "\(.+\)", "")

    passiert folgendes:  (Textbeispiel)

     

    Lager (2), Aussenlager (2,3), Lager 8726  (2,3,5,6), usw

     

    Es löscht mir wohl den gesammten Inhalt der Klammer. Aber nur der 1 Klammer und den Rest dahinter verschwindet auch.

    Heisst. Das Ergebnis ist:

    Lager 

     

    Ziel war es ja, das ich al Ergebnis: Lager, Aussenlager, Lager 8726, usw. hätte.

    Aber mit dem Code

    neue_Lagerzuordnung := replacex(replace(Lagerzuordnung, ",", ""),"\(\d+\)","")

    lässt sich das auch wunderbar umsetzen. 

     

    Schönen Tag allen und nochmals danke

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Roger J Nur der Vollständigkeit halber die regex-Lösung bei mehreren Klammerausdrücken (Gruppierung, wie T. Bartzsch schrieb) und mit nicht gierigem Multiplikator "+?"

      replacex(Text, "(\(.+?\))", "")
      
    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Das Thema RegEx ist sehr komplex aber auch oft echt hilfreich... als Tipp zum rumprobieren: regex101.com .....

    Und außerdem sehr wichtig und hilfreich zu wissen: Man kann mit Klammern Gruppen bilden und diese dann im Script gezielt ansprechen (daher muss man Klammern auch mit \ auskommentieren, wenn man tatsächlich nach einer Klammer sucht)

    Habe ich zB. immer eine Postleitzahl mit "D-" davor, kann ich den RegEx in zwei Gruppen unterteilen. Ich suche in der ersten Gruppe nach einem Buchstaben "\w" mit folgendem "-" 

    (\w-)

    und in der zweiten Gruppe nach einer mehrstelligen Zahl "\d+" oder exakt 5 stelligen Zahl \d{5}

    (\w-)(\d{5})

    Diese - mit Klammern gebildeten Gruppen - kann man nun im Script gezielt ansprechen, das funktioniert allerdings nur mit extractx(), nicht mit replacex():

    PLZmitD = "D-45436"

    SAUBERE_PLZ := extractx(PLZmitD,"(\w-)(\d{5})","$2")

    er holt sich also via Script nur die zweite Gruppe "$2" in das Feld SAUBERE_PLZ ...