XQuery 1.0 - разбить строку после n символов - PullRequest
2 голосов
/ 01 декабря 2011

Можно ли с помощью XQuery 1.0 разделить строку, скажем, длиной 100 символов, на последовательность строк длиной 10 символов каждая?

Другими словами, мне нужно разбивать строку после каждого10 символов, используя XQuery 1.0

Ответы [ 4 ]

5 голосов
/ 01 декабря 2011

Конечно; вот один подход:

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)

Надеюсь, это поможет, Christian

2 голосов
/ 01 декабря 2011

Вот возможное решение с использованием рекурсивной функции:

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)
1 голос
/ 01 декабря 2011

С помощью рекурсивной функции вы можете сделать:

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
};
1 голос
/ 01 декабря 2011

Очевидный способ, который приходит на ум, это

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

, позволяющий вам разобраться с неизбежными ошибками, возникающими один за другим ...

...