【问题标题】:How can I identify an emoji in scala?如何在 scala 中识别表情符号?
【发布时间】:2014-07-13 18:43:39
【问题描述】:

我正在处理来自 Twitter Api 的推文,并且很多推文都有表情符号。我正在尝试跟踪最常用的表情符号,但实际上无法识别它们。

我正在使用:https://github.com/iamcal/emoji-data 来识别表情符号。

我不知道如何判断一个字符串是否包含表情符号。我尝试将正则表达式与 emoji-data 'unified' 字段一起使用,我尝试检查字符串是否包含该字段。我真的只是不确定如何检查表情符号.. 任何帮助将不胜感激。

val pattern = new Regex("(${a.unified})")
(pattern findAllIn text).mkString(",")

这是我尝试使用正则表达式的方法。这没有找到任何表情符号。我还尝试在表情符号数据的统一字段之前添加一个 \u,但这没有帮助。

【问题讨论】:

  • "我已经尝试将正则表达式与 emoji-data 'unified' 字段一起使用" — 显示您尝试过的代码。

标签: regex string scala twitter emoji


【解决方案1】:

您的代码即将运行。要从text 中提取表情符号,请尝试:

"""\p{block=Emoticons}""".r.findAllIn(text).mkString

例如:

scala> val text = "Use regex and now you have two problems ? ?"
scala> """\p{block=Emoticons}""".r.findAllIn(text).mkString
res0: String = ??

【讨论】:

  • 不幸的是,它在复杂的表情符号上失败了,即。 e. ?‍?‍?或只是?
  • @ValeryRyaboshapko 向正则表达式添加一些额外的块:"""[\p{block=Emoticons}\p{block=Miscellaneous Symbols and Pictographs}\p{block=Supplemental Symbols and Pictographs}]""".r.findAllIn("?‍?‍? or just ?").mkString 返回????(不幸的是没有给家庭表情符号)
  • @darrenmc 我收到一条错误消息,提示程序无法识别补充和象形文字。我是否需要导入任何库才能将它们添加到我的正则表达式中?
  • @tharindu 你没有任何额外的导入,因为这是内置在 Java 标准库中的。您确实需要使用 java 10 或更高版本才能支持“补充符号和象形文字”。
【解决方案2】:

您可以使用以下正则表达式查找表情符号字符(以及 Unicode 语言平面之外的其他字符):

[^\u0000-\uFFFF]

例如,我们使用以下代码从字符串中过滤掉表情符号:

"some string".replaceAll("[^\u0000-\uFFFF]", "");

希望对您有所帮助。

【讨论】:

  • 该正则表达式过滤掉所有非拉丁字母的符号,而不仅仅是表情符号。例如,用西里尔字母试试吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2011-05-09
  • 2023-04-09
  • 2018-03-10
  • 2020-07-06
相关资源
最近更新 更多