Как получить только числа из строки с XPath - PullRequest
9 голосов
/ 07 сентября 2011

У меня есть строка, которая содержит числа. Это возможно только с XPath, что я получаю только цифры от него?

Например: myString = "abcd12ef34gh567", результат: 1234567

Ответы [ 2 ]

12 голосов
/ 07 сентября 2011

Используйте

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

Это так называемый метод "двойного перевода" , впервые предложенный @Michael Kay и может использоваться как в XPath 1.0, так и в XPath 2.0.

Конечно, в XPath 2.0 использование RegeX, как правило, будет более эффективным :

replace('abc123def590xyz', '[^\d]', '')
2 голосов
/ 07 сентября 2011

Если вы можете гарантировать, что нецифровые символы будут состоять только из строчных букв (как в вашем примере), вы можете сделать следующее в XPath 1:

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

При необходимости вы можете добавлять другие символы в строку алфавита.

В XPath 2 вы можете использовать регулярное выражение:

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