11

我有一个包含数字的字符串。仅使用 XPath 是否可行,我只能从中获取数字?

例如:myString="abcd12ef34gh567",结果:1234567

4

2 回答 2

17

使用

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

这就是所谓的“双重翻译”方法,由@Michael Kay 首次提出,可以在 XPath 1.0 和 XPath 2.0 中使用。

当然,在 XPath 2.0 中使用 RegX 通常会更高效

replace('abc123def590xyz', '[^\d]', '')
于 2011-09-07T17:35:11.930 回答
2

如果您可以保证非数字字符将只是小写字母(如您的示例中),您可以在 XPath 1 中执行以下操作:

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

您可以根据需要将其他字符添加到字母字符串中。

在 XPath 2 中,您可以使用正则表达式:

replace($myString, '[^0-9]', '')
于 2011-09-07T16:16:56.320 回答