我有一個字串,例如,let $baseString := "stringToReplace-Rem-aining-String"。我想運行一個條件測驗
來檢查$baseString是否包含"stringToReplace"和"-"。
if (fn:substring($baseString,1,15) = 'stringToReplace' and fn:matches($baseString, "([-]) )"),
如果是這樣,我想把'stringToReplace'替換為'replacedString',同時把"-"替換為""(空白),所以,輸出字串應該是replacedStringRemainingString。
我怎樣才能在xQuery中實作這一點呢?
到目前為止,我已經得到了以下2個獨立的代碼塊 - 但我需要以某種方式將這2個代碼結合起來。我真的不明白為什么我在這里使用for回圈,但這是我讓這個代碼塊無誤執行的方法。
let $baseString := "stringToReplace-Rem-aining-String"
for $x in $baseString return
如果(fn:substring($baseString,1,15) = 'stringToReplace' and fn:matches($baseString, "([-]) )")
則(fn:concat('replaceString',fn:substring($baseString,16,40)))
else ($baseString)
這給出的結果是
replacedString-Rem-aining-String
let $baseString := "stringToReplace-Rem-aining-String"
對于$baseString中的$x,回傳
如果(fn:substring($baseString,1,15) = 'stringToReplace' and fn:matches($baseString, "([-]) )")
那么 (fn:replace($baseString, "([-]) )", ""))
否則($baseString)
這給出了stringToReplaceRemainingString的結果。
有什么想法嗎?
uj5u.com熱心網友回復:
你可以嘗試將thens合并為
then (
let $tmp := fn:concat('replaceString',fn:substring($baseString,16,40))
return fn:replace($tmp, "([-]) )", "")
)
這樣至少可以得到你問題中的字串的預期輸出。
uj5u.com熱心網友回復:
嘗試:
let $baseString := 'stringToReplace-Rem-aining-String'.
回傳
如果(matches($baseString, '^stringToReplace.*-'))
那么 (' replacedString' || translate(substring($baseString, 16), '-', '')
否則$baseString
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329415.html
標籤:
