XPATH : replace every ohter whitespace

标签 xpath replace

我想用 x 替换所有其他(奇数?)空格。结果应该是:

axb axb axb axb axb

我尝试过类似的方法:

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")

关于XPATH : replace every ohter whitespace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18161780/

相关文章:

xml - 使用 "and"的 XPath 表达式在 Microsoft Edge 中不起作用?

JavaScript:我可以将过滤函数与正则表达式一起使用吗?

sql - 使用MS SQL修改XML列

xml - 如何获得XPATH中子项最多的ELEMENT?

javascript - 使用多个选择器查找 prev() 标签

java - 替换字符串中的多个子字符串

replace - 在 Notepad++ 中的 block 选择中搜索/替换

xpath - 如何匹配没有跟随兄弟

python - 从字符串列表中选择数字

sharepoint - 当 Word Doc 位于服务器上时,如何从 Excel VBA 更改 Word Doc 中的文本?