XQuery 1.0 - 在n个字符后分割字符串

时间:2011-12-01 12:35:42

标签: xml xquery

是否有可能使用XQuery 1.0将一个字符串(比方说100个字符长)拆分为一系列字符串,每个字符串长10个字符?

换句话说,我需要使用XQuery 1.0

在每10个字符后拆分一个字符串

4 个答案:

答案 0 :(得分:5)

不确定;这是一种方法:

let $width := 10
let $string := '...'
for $i in 0 to string-length($string) idiv $width
let $pos := $i * $width + 1
return substring($string, $pos, $width)

希望这有帮助, 基督教

答案 1 :(得分:2)

以下是使用递归函数的可能解决方案:

declare function local:split($str,$start,$len){
  let $res := substring($str,$start,$len)
  return if ($res) then ($res,local:split($str,$start + $len, $len)) else $res
};

let $x := "sdlfksldfkjsldfkfjsldkjflskfd"
return local:split($x,1,10)

答案 2 :(得分:1)

想到的显而易见的方法是

for $i in 0 to string-length($input)+9 idiv 10
return substring($input, $i*10+1, 10)

让你理清不可避免的逐个错误......

答案 3 :(得分:1)

使用递归函数,您可以执行以下操作:

declare function local:splitString($String as xs:string?, $length as xs:integer) as xs:string* {
  if (exists($String) and string-length($String) > $length) then 
    (substring($String,1,$length), local:splitString(substring($String,$length),$length)) 
  else $String
};