例如,在python中,我可以这样做
"X" * 3
或更重要的是(在这种情况下)
"XO" * 3
分别获得XXX
和XOXOXO
。
我正在尝试使用xpath / xquery复制它。理想情况下,应该是类似
"XO" * count(something)
我能得到的最接近的结果是,通过创建一个长度接近我对count(something)
的估计的字符串,然后用substring()
对其进行切片,来伪造输出。因此,如果我的count(something)
返回2
substring("XXX",1,count(//something))
将返回XX
。
如果我的字符串是XO
,它会变得稍微复杂一些,在这种情况下,我必须将其修改为
substring("XOXOXO",1,count(//something) * 2)
获得XOXO
。
但是,除了感到琐之外,还需要估算count()
并创建正确长度的字符串(加上一定的安全裕度)。
在xpath或xquery中有更好的方法吗?
答案 0 :(得分:5)
您可以使用((1 to 3) ! 'XO') => string-join()
,当然,如果您希望为字符串和所需的“乘法”数加上参数,也可以将其放入函数中。
declare function local:multiply-string($input as xs:string, $factor as xs:integer) as xs:string
{
((1 to $factor) ! $input) => string-join()
};
local:multiply-string('XO', 3)