xquery使用字符位置提取表达式

时间:2015-09-02 11:46:12

标签: string substring xquery concat

我有以下XML:

<activity>
  <server>digmspt1p:1043SERVER1</server>
</activity>

我需要使用XQuery提取字符串直到端口: digmspt1p:1043,这意味着在:之后的第4位。

是否有实现这一目标的功能?

我发现只有functx:substring-before-last-match,这只有在SERVER1不包含数字时才有用。

1 个答案:

答案 0 :(得分:0)

let $a := <activity>
                <server>digmspt1p:1043SERVER1</server>
          </activity>

  let $fir := substring-before($a/server, ":")
  let $sec := substring(substring-after($a/server, ":"),1,4)
  let $con := concat($fir, ":",$sec)

  return $con

变量$fir会将字符串存储在&#34;:&#34;之前,在您的情况下,它将是&#39; digmspt1p&#39;。

$sec将首先获取&#34;:&#34;之后的字符串,然后使用substring()它将根据需要剪切前4个字符。

最后,$con将连接变量以获得所需的输出。

HTH。