0

Frage zu replacex()

Hallo,

ich habe eine Frage zu replacex(), wo ich nicht weiterkomme. Thema ist die Korrektur von Adressen bei Bestellungen aus dem Webshop, hier vor allem das unnötige Leerzeichen zwischen Hausnummer und Buchstabe, der DHL bei der Erstellung von Versandetiketten stört.

Beispiel:

Feldwert ist: Mustermannstraße 3 A

Feldwert soll: Mustermannstraße 3A

Es geht also darum, jedes Leerzeichen zu entfernen, das nach einer Zahl und vor einem Buchstaben steht.

Ich nehme an, replacex() kann genau das, aber ich kriege es nicht hin. Über Hilfe würde ich mich freuen.

Viele Grüße

Oliver

4 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Oliver. Die Regexmaschine von Ninox versteht leider kein lookbehind, außer Du kannst für diese Aufgabe auf Firefox als Browser zurückgreifen. Dann ginge lookbehind-Leerzeichen-lookahead:

    replacex(ADRESSE, "(?<=\d)\s(?=[a-zA-Z])", "")
    

    Wenn es nicht exotische Adressen sind, wo der Strassenname Leerzeichen enthält, reicht auch lookahead allein:

    replacex(Text, "\s(?=[a-zA-Z])", "")
    
    • OLIVER
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Mirko, 

    danke für deine kompetente Antwort! Es heißt also lookbehind-Leerzeichen-lookahead: Da habe ich jetzt viel gelernt, dankeschön! 

    Firefox setze ich nicht ein, generell arbeiten wir nicht im Browser. Wir verwenden fast immer die Mac-App und manchmal die iPad-App. Ich mag Ninox gerade wegen dieser nativen Apps, wo ich auch im Zug arbeiten kann, wenn das Netz dauernd abbricht, und Ninox sich dann von selbst wieder synchronisiert, wenn das Netz wieder da ist.

    Die von dir genannte zweite Variante nützt mir schon sehr viel, das deckt die meisten Fälle ab. Ausgenommen natürlich, wie von dir genannt, die Straßen, wo mit Absicht ein Leerzeichen drin ist:

    Großer Steinweg 3 A  wird zu 

    GroßerSteinweg 3A

    Das moniert DHL natürlich auch.

    Daher die Frage: Wie würde der Code lauten, wenn man "Kleinbuchstabe gefolgt von Großbuchstabe" erstes würde durch ""Kleinbuchstabe Leerzeichen Großbuchstabe"? Das könnte ich dann als Variante noch anfügen.

    Nochmals herzlichen Dank!

    Oliver

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Schau mal, ob das Deine Wünsche abdeckt. Hier wird das Leerzeichen abgefragt, dem ein! Buchstabe und das Zeilenende folgt.

    replacex(Text, "\s(?=[a-zA-Z]$)", "")
    
    • OLIVER
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Mirko, 

    bin heute erst zum Testen gekommen. Das ist ja eine extrem elegante Lösung, denn genau so ist es - es gibt immer nur einen Buchstaben nach dem Leerzeichen und dann das Zeilenende. 

    Funktioniert perfekt, herzlichen Dank!

    Oliver

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 4Antworten
  • 55Ansichten
  • 1 Folge bereits