本文介绍了如何使用XQuery从文本中删除emoji的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个$Text=&😀😃😄üäö$";
我只想使用XQuery从文本中删除表情符号。我如何才能做到这一点?
预期结果:";Helloüäö$";
我尝试使用:
replace($text, '[^x00-xFFFF]', '')
但不起作用。
提前感谢:)
推荐答案
要替换emoji,您可以利用XPath对Character Class Escapes的支持,特别是类别和块Escapes,来匹配命名的Unicode块:
replace("Hello 😀😃😄 üäö$", "p{IsEmoticons}", "")
这将返回预期结果:
Hello üäö$
表情符号块并不包含与表情符号通常关联的所有字符。例如,根据https://www.compart.com/en/unicode/U+1F49C这样一个允许您查找unicode字符信息的站点,💜(紫心,U+1F49C)来自:
此块在XPath或XQuery处理器中不可用,因为它既没有在上面链接的XML架构1.0规范中列出,也没有在Unicode block names for use in XSD regular expressions中列出-符合XML架构1.1的XPath和XQuery处理器的块列表required to support。
对于XPath或XQuery中不可用的块中的字符,您可以手动构造字符类。例如,给定上面的紫心字符,我们可以按如下方式匹配它:
replace("Purple 💜 heart", "[🌀-🗿]", "")
这将返回预期结果:
Purple Heart
如果您想知道为什么我们使用🌀
而不是U+1F300
或x1F300
,这是因为,正如Michael Kay上面指出的,XQuery使用的是XML转义约定
,而不是C/Java转义约定xFFFF
。&
(我已经根据其他非常有用的评论更新了答案。)
这篇关于如何使用XQuery从文本中删除emoji的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!