XQuery 将土耳其语字符的 'ü' 替换为 'u'

XQuery Replace 'ü' to 'u' for Turkish characters

我有动态参数功能。我为此使用 MicroStrategy 工具。

让 $uri := replace('http://url/suggest?searchTerm=DYNAMIC PROMPT','\s+','%20')

我想在此函数中将“ü”替换为 'u'。我已经将 ('\s+','%20') 用于 space 个字符。

多个replace函数可以嵌套:

let $string := 'http://url/suggest?searchTerm=DüNAMIC PROMPT'
let $uri := replace(replace($string, '\s+','%20'), 'ü', 'u')
return $uri

替换单个字符,也可以使用translate函数:

let $string := 'http://url/suggest?searchTerm=DüNAMIC PROMPT'
let $uri := translate($string, ' üÜöÖäÄ','+uUoOaA')
return $uri

我可以对多个字符使用“let $uri := replace(replace($string, '\s+','%20'), 'ü', 'u')”吗? 例如:让 $uri := replace(replace($string, '\s+','%20'),'üÜöÖääÄ','+uUoOaA')

因为我需要两个替换案例。

Microstrategy 不支持这种情况。例如,我给了 'Müşteri' 关键字,它给了我不同的答案:(

我同意 Leo 的建议,即 fn:encode-for-uri() 是针对所述用例的方法 - 即,在构造 URL.[=14 时用于处理空格、特殊字符和变音符号=]

但是,如果您有兴趣从字符串中去除变音符号,可以按照以下方法进行操作:

xquery version "3.1";

"Müşteri" 
=> normalize-unicode("NFD") 
=> replace("\p{IsCombiningDiacriticalMarks}", "")

这个returnsMusteri.

作为参考,这是基于我在 https://gist.github.com/joewiz/af04074c28e0ae2a1b92 发布的 Gist。