Announcement

Collapse
No announcement yet.

Alle deutschen Sonderzeichen ersetzen: Beste Lösung?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alle deutschen Sonderzeichen ersetzen: Beste Lösung?

    Hallo,

    was ist der effizienteste Weg, alle deutschen Sonderzeichen in einer Zeichenkette zu ersetzen?

    Also so:

    ä -> ae
    ö -> oe
    ü -> ue

    u. s. w.

    Mit der replace-Funktion ist das offenbar möglich, aber die beiden Lösungen, die mir damit einfallen, sind unschön:

    Variante 1: Verschachtelte Aufrufe von replace().

    replace(replace(replace(.,ü,ue)),'ö',oe),'ä',ae)

    Das ist schon so kaum lesbar, und es fehlen ja noch ß und die Großbuchstaben. Da ist mir dann Variante 2 eingefallen.

    Variante 2: Einsatz von Variablen
    <xsl:variable name="orig" select="."></xsl:variable>
    <xsl:variable name="orig_zwischen" select="replace(replace(replace(replace({$orig_zwi schen},'ß','ss'),'ü','ue'),'ö','oe'),'ä','ae')"/>
    <xsl:variable name="ergebnis" select="replace(replace(replace({$ergebnis},'Ü','U e'),'Ö','Oe'),'Ä','Ae')"/>

    Da muss sich doch was Bessers finden lassen...?

    Vielen Dank für alle Vorschläge!

    Alex

    Hier noch ein paar Infos zum Hintergrund: Ich habe ein Problem mit Dateinamen unter Windows. Ein Skript (.bat) ruft mehrfach Saxon auf, um XSL-T-Stylesheets auf XML-Dokumente anzuwenden. Dabei werden neue Dateien für nachfolgende Verarbeitungsschritte angelegt.

    Problem: Die erzeugten Dateien können (abhängig vom Inhalt des verarbeiteten XML-Dokuments) Namen mit deutschen Sonderzeichen haben.

    Für Saxon und XSL-T ist das offenbar kein Problem, leider aber für das Batch-Skript: Es liefert mir bei allen Dateinamen mit Sonderzeichen die Fehlermeldung "Datei nicht gefunden".
Working...
X