xsl supprimer tous les caractères non numériques et leader de 1
J'ai besoin de convertir numéro de téléphone entrant chaînes à un format standardisé qui n'a pas de caractères non numériques et des bandes le premier nombre s'il est 1.
Par exemple:
"+1 (222) 333-4444 x 5555" devient "22233344445555"
Merci d'avance pour votre aide!
OriginalL'auteur MattM | 2010-09-29
Vous devez vous connecter pour publier un commentaire.
I. XSLT 1.0 solution:
Cette transformation:
lorsqu'il est appliqué sur ce document XML:
produit le voulait, résultat correct:
Explication:
L'expression:
translate(.,'0123456789','')
est évalué à une chaîne qui contient tous les caractères non numériques dans le nœud actuel.Nous utilisons 1. ci-dessus dans l'expression:
traduire(., traduire(.,'0123456789',"), ")
et cela renvoie une chaîne où tous les caractères non numériques à partir du nœud courant sont supprimés.
.3. L'expression:
(substring($vnumsOnly,1,1)='1') +1)"
évalue à2
si le premier caractère de$vnumsOnly
est'1'
et qu'il évalue à1
si le premier caractère n'est pas un '1'..4. Nous utilisons 3. dans l'expression suivante:
qui évalue à la même chaîne
$vnumsOnly
si elle ne commence pas par " 1 "et qu'il évalue à ses sous-chaîne à partir de la 2ème caractère, si le premier caractère est "1".II. XPath 2.0 solution:
Suffit d'utiliser:
L'intérieur remplacer supprime tous les caractères qui ne sont pas de 0 à 9 chiffres). L'extérieur de remplacer supprime le leader de 1 (si elle existe).
+1 pour XPath 2.0
+1 pour le sly double traduire pour XPath 1.0!
Vous êtes les bienvenus.
L'expression que vous proposez sera probablement obtenir le résultat correct. Cependant, il peut exiger de la mémoire complète, surtout quand la chaîne est plus long. Le "double-traduire" méthode ne prend pas en construire un deuxième chaîne est plus longue que la chaîne d'entrée.
OriginalL'auteur Dimitre Novatchev
Cette feuille de style:
Avec cette entrée:
De sortie:
une solution parfaite qui a été soumis, même quelques secondes avant le mien. 🙂
Je suis de ussing feedreader pour faire maintenant 😉
OriginalL'auteur
replace(remplacer(., '[^1-9]', "), '^1', ") - je suis de répondre à cette... à la Place de [^1-9]... [^0-9] sinon tout les 0 le numéro de téléphone est supprimé. Mais d'autres que ce fixe ma Journée de travail question de l'intégration de grands!
OriginalL'auteur Rob Alejandro
Vous pouvez utiliser imbriquée remplacer fonctions xpath. L'initié serait de changer le premier chiffre de l'espace si elle est de 1, l'étranger pourrait changer nondigits à l'espace.
OriginalL'auteur Gábor Lipták