我想用x
替换所有其他(奇数?)空格。结果应该是:
axb axb axb axb axb
我尝试过类似的事情:
replace ("a b a b a b a b" , " " , "x")[position() mod 2 = 0]
- 但没有结果。
答案 0 :(得分:1)
首先: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")