【问题标题】:Remove character and remove whitespace in XQUERY删除 XQUERY 中的字符并删除空格
【发布时间】:2016-08-09 11:37:21
【问题描述】:

我想要达到的目标:

对于给定的字符串 (AA012345),我需要检查字符串中索引 3 处的值,如果它是 0,我需要删除它并删除 0 本来所在的空格.

我尝试了一些不同的方法 - 如果 substring(., 3,1)0,则替换为 '',但这不起作用。以及如果substring(., 3,1)0,删除字符然后尝试删除空格。

任何建议或示例将不胜感激。

仅限使用 XQuery 1.0。

谢谢

【问题讨论】:

  • 请添加您尝试过但不起作用的实际代码。

标签: xml xquery


【解决方案1】:

可以通过将字符串分解为三个块(位置 3 之前、位置 3、位置 3 之后)并在中间块上使用条件重新组合来完成:

xquery version "1.0";

let $string := "AA012345"
let $start := substring($string, 0, 3)
let $middle := substring($string, 3, 1)
let $end := substring($string, 4)
return concat($start, $middle[. ne "0"], $end)

它也可以更详细地进行优化。如果位置 3 不为零,则不需要评估所有 let 子句。

xquery version "1.0";

let $string := "AA012345"
let $start := substring($string, 0, 3)
let $middle := substring($string, 3, 1)
let $end := substring($string, 4)
return if($middle eq "0")
       then concat($start, $end)
       else $string

【讨论】:

  • 您好 Ghislain,感谢您的回复。在无法让替换功能按我需要的方式工作后,我实现了与此非常相似的东西。
【解决方案2】:

更简单:replace("AA012345","^(.{2})(0)(.*)$","$1$3")

【讨论】:

  • 嗨,不幸的是,这似乎不起作用。我得到与输入相同的结果,有什么想法吗?
  • 您的 XQuery 处理器和版本是什么?
  • 很好,我限制了自己太多,忽略了正则表达式已经在 1.0 中可用。
  • Oracle XQuery 引擎 - 1.0 版
  • 在 regex101.com 中尝试此操作时,似乎在“0”上找不到匹配项。我不是精通正则表达式,但据我所知,您的陈述看起来是正确的。
猜你喜欢
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多