将字符串乘以整数?

时间:2020-06-19 15:03:44

标签: xpath xquery

例如,在python中,我可以这样做

"X" * 3

或更重要的是(在这种情况下)

"XO" * 3

分别获得XXXXOXOXO

我正在尝试使用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中有更好的方法吗?

1 个答案:

答案 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)

https://xqueryfiddle.liberty-development.net/pPqteBa/1