问题
I have a string which contains numbers. Is it feasible only with XPath that I get only numbers from it?
For example: myString="abcd12ef34gh567", result: 1234567
回答1:
Use:
translate(., translate(.,'0123456789',''), '')
This is the so called "double-translate" method, first proposed by @Michael Kay and can be used both in XPath 1.0 and in XPath 2.0.
Of course, in XPath 2.0 using RegeX will generally be more efficient:
replace('abc123def590xyz', '[^\d]', '')
回答2:
If you can guarantee that the non-digit characters will be only lower-case letters (like in your example), you could do the following in XPath 1:
translate($myString, 'abcdefghijklmnopqrstuvwxyz', '')
You can add other characters to the alphabet string as necessary.
In XPath 2, you could use a regex:
replace($myString, '[^0-9]', '')
来源:https://stackoverflow.com/questions/7337097/how-to-get-only-numbers-from-string-with-xpath