绘文字emoji

最近有个webservice报错,原因是穿了一些非法字符。

一问,用户手机填了表情包--绘文字,emoji

处理绘文字,还得看日本人,emoji就是绘文字的日语发音。。。

倒不一定是他们发明的,但这帮人太喜欢用这个了,翻盖手机的年代就开始玩这个了。

https://lets-emoji.com/emojilist/emojilist-1/

https://cyzennt.co.jp/blog/2019/07/13/__trashed/

 

所有的绘文字?

推特上实时统计的绘文字使用量!

realtime emoji use on twitter

http://www.emojitracker.com/

 

正则表达式匹配

https://www.web-dev-qa-db-ja.com/ja/java/%E6%96%87%E5%AD%97%E5%88%97%E3%81%8B%E3%82%89%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E7%B5%B5%E6%96%87%E5%AD%97%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/1048492243/

 

 

这个写得倒是挺规整,可惜不对。。。。

https://www.faqcode4u.com/faq/213749/how-to-deal-with-invalid-characters-in-a-ws-output-when-using-cxf

/**
 * From xml spec valid chars:<br>
 * #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]<br>
 * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.<br>
 * @param text The String to clean
 * @param replacement The string to be substituted for each match
 * @return The resulting String
 */
 public static String CleanInvalidXmlChars(String text, String replacement) {
     String re = "[^\u0009\r\n\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF]";
     return text.replaceAll(re, replacement);
 }

 

这位写得好,是.net版本

https://www.cnblogs.com/Death/archive/2012/02/28/2371117.html

 

wiki

https://ja.wikipedia.org/wiki/%E7%B5%B5%E6%96%87%E5%AD%97

 

这一段可以用:

https://ja.getdocs.org/java-string-remove-emojis

次の例では、Unicodeポイントを使用して2つのUnicode範囲の絵文字を削除します。

@Test
public void whenRemoveEmojiUsingCodepoints__thenSuccess() {
    String text = "la conférence, commencera à 10 heures ?";
    String result = text.replaceAll("[\\x{0001f300}-\\x{0001f64f}]|[\\x{0001f680}-\\x{0001f6ff}]", "");

    assertEquals(result, "la conférence, commencera à 10 heures ");
}
現在利用可能な絵文字とそのコードポイントの全リストはhttps://unicode.org/emoji/charts/full-emoji-list.html[ここ]にあります。

 

这个看起来比较全了,是个官方组织

https://unicode.org/emoji/charts/full-emoji-list.html

 

这个是上面博客中推荐的绘文字处理库

<dependency>
    <groupId>com.vdurmont</groupId>
    <artifactId>emoji-java</artifactId>
    <version>4.0.0</version>
</dependency>

 

使用方法:

それでは、__ emoji-java を使って、

String__から絵文字を削除する方法を見てみましょう。

@Test
public void whenRemoveEmojiUsingLibrary__thenSuccess() {
    String text = "la conférence, commencera à 10 heures ?";
    String result = EmojiParser.removeAllEmojis(text);

    assertEquals(result, "la conférence, commencera à 10 heures ");
}
ここでは、




EmojiParser ** .の

removeAllEmojis()

メソッドを呼び出しています。


parseToAliases()

メソッドを使用して、emojiをそのエイリアスに置き換えるために

EmojiParser

を使用することもできます。

@Test
public void whenReplaceEmojiUsingLibrary__thenSuccess() {
    String text = "la conférence, commencera à 10 heures ?";
    String result = EmojiParser.parseToAliases(text);

    assertEquals(
      result,
      "la conférence, commencera à 10 heures :sweat__smile:");
}
emojiをそれらの別名に置き換える必要がある場合、このライブラリを使用することは非常に便利です。

ただし、emoji-javaライブラリは絵文字しか検出できませんが、記号やその他の特殊文字を検出することはできません。

 

 

 

次の例では、Unicodeポイントを使用して2つのUnicode範囲の絵文字を削除します。

 

@Test
public void whenRemoveEmojiUsingCodepoints__thenSuccess() {
    String text = "la conférence, commencera à 10 heures ?";
    String result = text.replaceAll("[\\x{0001f300}-\\x{0001f64f}]|[\\x{0001f680}-\\x{0001f6ff}]", "");

    assertEquals(result, "la conférence, commencera à 10 heures ");
}

 

 

現在利用可能な絵文字とそのコードポイントの全リストはhttps://unicode.org/emoji/charts/full-emoji-list.html[ここ]にあります。

posted @ 2022-08-20 12:39  multitude  阅读(233)  评论(0编辑  收藏  举报