11 votes

Comment obtenir uniquement des chiffres à partir d'une chaîne de caractères avec XPath ?

J'ai une chaîne qui contient des chiffres. Est-il possible, uniquement avec XPath, d'en tirer uniquement des nombres ?

Par exemple : myString="abcd12ef34gh567", résultat : 1234567

17voto

Dimitre Novatchev Points 147842

Utilisez :

translate(., translate(.,'0123456789',''), '')

C'est la méthode dite de "double traduction". proposé pour la première fois par @Michael Kay et peut être utilisé aussi bien dans XPath 1.0 que dans XPath 2.0.

Bien sûr, dans XPath 2.0, l'utilisation de RegeX sera généralement plus efficace. :

replace('abc123def590xyz', '[^\d]', '')

2voto

James Sulak Points 9959

Si vous pouvez garantir que les caractères non numériques ne seront que des lettres minuscules (comme dans votre exemple), vous pouvez faire ce qui suit dans XPath 1 :

translate($myString, 'abcdefghijklmnopqrstuvwxyz', '')

Vous pouvez ajouter d'autres caractères à la chaîne alphabétique si nécessaire.

Dans XPath 2, vous pouviez utiliser une regex :

replace($myString, '[^0-9]', '')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X