我正在尝试在XPath中翻译一些字符串,但我得到了一些奇怪的输出。
这就是功能:
translate(translate(translate(translate('1 day 23 hours 30 minutes 25 seconds','day','dag'),'hours','uur'),'minutes','minuut'),'seconds','seconden')
目前的输出是:
1 dag 23 uur 30 minrut 25 tcund
但我需要的是:1 dag 23 uur 30 minuut 25 seconden
有没有一种特殊的方法可以同时翻译多个子串?
答案 0 :(得分:2)
这不是translate()
的工作方式。翻译时:
translate('minutes seconds','hours','uur')
预期结果是:
minrte ecund
因为您实际上是在告诉处理者在第二个参数中替换前三个字母的出现位置:
'h', 'o', 'u'
因为它们出现在字符串'minutes seconds'中,并带有相应的字符
'u', 'u', 'r'
分别删除字符'r'
和's'
,因为它们在第三个参数中没有相应的替换。
如果您想要替换完整的字,并且正在使用XPath 2.0,那么您可以使用replace()
函数。
replace(replace(replace(replace('1 day 23 hours 30 minutes 25 seconds','day','dag'),'hours','uur'),'minutes','minuut'),'seconds','seconden')