2

我想用x. 结果应该是:

斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头

我试过类似的东西:

replace ("a b a b a b a b" , " " , "x")[position() mod 2 = 0]

——但没有结果。

4

1 回答 1

1

首先:fn:replace需要一个兼容 XPath 2.0(或 XQuery)的查询处理器。

您不能fn:replace与这样的谓词一起使用。在 XPath 中没有类似数组的访问字符(就像你习惯从例如 C 中一样)。您可能也可以使用fn:tokenizefor 循环来解决这个问题,但这会使事情变得相当复杂。

您的查询没有返回任何结果,因为只有一个结果(单元素字符串序列),但谓词仅每秒返回一次。


请改用正则表达式。此表达式匹配非空格 ( \S) 和空格 ( \s),并将这些模式替换x为介于两者之间的版本。最后的星量词对于奇数个匹配组很重要(如您的示例中)。

replace("a b a b a b a b" , "(\S+)\s+(\S+\s*)", "$1x$2")
于 2013-08-10T13:21:37.947 回答