xsl entfernen Sie alle nicht-numerischen Zeichen und führende 1
Ich konvertieren müssen Sie die Rufnummer des Anruf-strings, um ein standardisiertes format, dass nicht alle nicht-numerischen Zeichen und Streifen aus den führenden Zahl, wenn es 1.
Beispiel:
"+1 (222) 333-4444 x 5555" wird "22233344445555"
Dank im Voraus für Eure Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
I. XSLT 1.0-Lösung:
Diese transformation:
, wenn angewandt auf das XML-Dokument:
erzeugt die gewünschte, richtige Ergebnis:
Erklärung:
Den Ausdruck:
translate(.,'0123456789','')
ausgewertet wird, um eine Zeichenfolge, die enthält alle nicht-numerischen Zeichen im aktuellen Knoten.Verwenden wir 1. über in den Ausdruck:
translate(., übersetzen(.,'0123456789',"), ")
und dies wertet einen string wo alle nicht numerischen Zeichen aus dem aktuellen Knoten werden gelöscht.
.3. Der Ausdruck:
(substring($vnumsOnly,1,1)='1') +1)"
ausgewertet2
wenn das erste Zeichen von$vnumsOnly
ist'1'
und es ergibt1
wenn das erste Zeichen nicht "1'..4. Wir verwenden 3. in der folgende Ausdruck:
die Auswertung zu den gleichen string
$vnumsOnly
wenn es beginnt nicht mit '1' und es wertet seine Teilstring ab der 2. Charakter, wenn das erste Zeichen '1'.II. XPath-2.0-Lösung:
Verwenden Sie einfach:
Den inneren ersetzen entfernt alle Zeichen, die nicht von 0 bis 9 (Ziffern). Die äußeren ersetzen entfernt die führende 1 (falls vorhanden).
translate($phone,'0123456789'+$phone,'0123456789')
statttranslate(., translate(.,'0123456789',''), '')
was ist besser?Diesem stylesheet:
Mit diesem input:
Ausgabe:
ersetzen(ersetzen(., '[^1-9]', "), '^1', ") - ich bin auf diese... "Anstelle von" [^1-9]... Mit [^0-9] sonst eine 0 in der Handy-Nummer gelöscht. Aber andere als, dass diese Feste mein Arbeitstag integration toll!
Könnten Sie verschachtelte ersetzen xpath-Funktionen. Der insider würde ändern Sie die erste Ziffer space, wenn es 1 ist, der Außenseiter würde sich ändern, nondigits Raum.