我想用x
. 结果应该是:
斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头 斧头
我试过类似的东西:
replace ("a b a b a b a b" , " " , "x")[position() mod 2 = 0]
——但没有结果。
首先:fn:replace
需要一个兼容 XPath 2.0(或 XQuery)的查询处理器。
您不能fn:replace
与这样的谓词一起使用。在 XPath 中没有类似数组的访问字符(就像你习惯从例如 C 中一样)。您可能也可以使用fn:tokenize
for 循环来解决这个问题,但这会使事情变得相当复杂。
您的查询没有返回任何结果,因为只有一个结果(单元素字符串序列),但谓词仅每秒返回一次。
请改用正则表达式。此表达式匹配非空格 ( \S
) 和空格 ( \s
),并将这些模式替换x
为介于两者之间的版本。最后的星量词对于奇数个匹配组很重要(如您的示例中)。
replace("a b a b a b a b" , "(\S+)\s+(\S+\s*)", "$1x$2")