本文介绍了如何使用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+1F300x1F300,这是因为,正如Michael Kay上面指出的,XQuery使用的是XML转义约定,而不是C/Java转义约定xFFFF。&

(我已经根据其他非常有用的评论更新了答案。)

这篇关于如何使用XQuery从文本中删除emoji的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 04:07