So ersetzen Sie alle Sonder Zeichen in einer Zeichenfolge mit Leerzeichen?

Ich bin mit XSLT 1.0.

Angenommen ich habe eine Zeichenfolge, die ähnlich wie "apple-mango%auch|es"

Ich versuche, ersetzen Sie alle nicht-alphanumerischen Zeichen mit Leerzeichen.
Ich habe versucht,

<xsl:value-of select="translate(., translate(., '0123456789abcdefghijklmnopqrstuvwxysABCDEFGHIJKLMNOPQRSTUVWXYZ', ''), ' ')"/>

aber es hat nicht funktioniert.
Das Problem ist mit der äußeren übersetzen.

So wie ich das verstehe, in einem translate() die Länge der Dritten Zeichenfolge sollte derselbe sein wie der zweite string oder sonst die fehlenden Zeichen werden getroffen werden, um durch einen leeren string ersetzt ('').

Das innere zu übersetzen, funktioniert einwandfrei, da ich möchte, entfernen Sie alle Zeichen mit einem leeren string sowieso.

Aber die äußeren übersetzen ersetzt nur das erste Zeichen des zweiten argument-string mit einem Leerzeichen und ersetzt den rest mit einem leeren string.

Da meine Liste von nicht-alphanumerischen Zeichen im zweiten argument des äußeren übersetzen ist dynamisch, ich kann nicht pre-code, das Dritte argument.

ex:

Meine innere übersetzen zurück -%|. Ist das so richtig.

Nun auf mein äußeres zu übersetzen, ist translate(., '-%|', ' ').

Gibt apple mangoalsothere.

Wie kann es geschehen kurzen schreiben etwas wie dieses:

translate(., '`~!@#$%^&*()-_=+[]{}\|;:'",<.>/?', '                                  ')
  • Können Sie erklären, was falsch ist mit dem ersten Ausdruck, so dass in der Tat ersetzen Sie alle nicht-Zeichen alphameric mit einem Leerzeichen. Sie wirklich brauchen, um spezifisch über, was Sie tun müssen, da gibt es nicht wirklich eine definition von "Sonderzeichen". Entweder müssen Sie definieren, genau die Zeichen, die Sie behalten möchten, oder Sie definieren genau das, was Zeichen, das Sie entfernen möchten. Danke!!!
  • Die Doppel-übersetzen trick verwendet in Ihrem Versuch, genau diese Aufgabe zu bewältigen: die innere übersetzen erzeugt eine Liste aller Zeichen in der Eingabe nach dem entfernen ascii-alphanumerische Zeichen, und die äußeren übersetzen ersetzt alle Zeichen in dieser Liste durch Leerzeichen.
  • Durch Sonderzeichen meinte ich nicht-alphanumerische Zeichen. Finden Sie die aktualisierte Frage
  • Finden Sie die aktualisierte Frage
Schreibe einen Kommentar