JAVA

[JAVA] JAVA EMOJI PARSER / 이모지 제거 라이브러리 사용법 / how to remove emoji JAVA / vdurmont 사용법

예나부기 2021. 10. 19.

 

사건의발단

 

이모지(emoji)를 제거하는 코드에서, 기존에는 정규식과 replaceAll 함수를 사용해 이모지를 제거했었다.

-그런데 이모지만 제거되어야 하는데 특수문자가 같이 필터링 됨.

 

문제가 된 특수문자는 '┼' 였는데, '┼'가 걸리지 않는 정규식을 만들어도 자바 코드에서는 정상적으로 작동하지 않았다.

-5바이트가 넘는 문자는 1차로 걸러낼 수 있었지만 그마저도 '☺️'같은 글자는 바이트가 달라서 정상적으로 필터링 X

-이모지가 업데이트 되어버리면 정규식을 계속 추가해야함

 

기존 코드

String str = str.replaceAll("[\\p{C}\\p{So}\uFE00-\uFE0F\\x{E0100}\\x{E01EF}]+", "").replaceAll(" {2,}", " ");

 

1.정규식을 이용

 

미친 듯한 구글링으로 많은 정규식을 넣어서 돌려봤다.

결과는 실패. 자바 코드에서 정상적으로 작동하지 않았다.

 

2. 특수문자를 모두 걸러내는 정규식을 이용 

 

        String regex = "[^\uAC00-\uD7A3xfe0-9a-zA-Z\\s]";
        String str =str.replaceAll(regex, "");

한글과 숫자, 영문자와 공백만 가능하도록 하고 나머지는 모두 빈칸 처리 했다.

보기엔 깔끔했지만 내가 원하는 결과가 아니다. 나는 이모지만!!제거하고 특수문자는 포함하고 싶음

 

3. Emoji Parser 라이브러리를 이용

Emoji Parser 라이브러리

https://mvnrepository.com/artifact/com.vdurmont/emoji-java

1)maven에서 Emoji Java라고 검색해서 가장 최신 버전의 jar를 다운받는다.

2)각자 프로젝트의 lib 폴더에 jar를 추가해준다. (추가 후 톰캣 재시작)

-Eclipse의 경우에는 Project 오른쪽 클릭 > Build Path > Configure Build Path 에서

Libraries 클릭 수 Classpath에 Add External JARs.. 로 jar 파일의 위치를 추가해준다. 그 뒤에 Apply and Close

-jsp 페이지를 작성하고 있던 VSCode의 경우에는 lib 폴더에 jar만 추가해주었다.

 

** 이모지파서 (EmojiParser)는 jsonArray 형태로 emoji에 대한 정보를 담고 있기 때문에, json jar도 추가해야 함(필수)

https://code.google.com/archive/p/org-json-java/downloads

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

 

Eclipse에서 구동한 코드

package emojiTest;
import com.vdurmont.emoji.Emoji;
import com.vdurmont.emoji.EmojiManager;
import com.vdurmont.emoji.EmojiParser;


public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		  String str1 = "An 😀awesome 😃string with a few 😉emojis!";
	        String result1 = EmojiParser.parseToAliases(str1);
	        System.out.println("Turn emoji into characters: EmojiParser.parseToAliases"+result1);
	}

}

-parseToAliases 함수를 사용했다. 매개변수로 들어온 문자열 내에 있는 이모지를 판별하여

웃는 이모지는 smile, 윙크 이모지는 wink 등의 문자열로 바꿔준다.

 

VSCode에서 구동한 코드

<%@ page import="com.vdurmont.emoji.Emoji" %> 
<%@ page import="com.vdurmont.emoji.EmojiManager" %> 
<%@ page import="com.vdurmont.emoji.EmojiParser" %> 
<%@ page import="org.json.simple.JSONObject,org.json.simple.parser.*" %>
<%@ page import="org.json.simple.*" %>

<%!

String str = "An 😀awesome 😃string with a few 😉emojis!";
String str= EmojiParser.removeAllEmojis(str);

%>

-removeAllEmojis 함수를 사용했다. 말 그대로 문자열 내에 포함된 모든 이모지를 제거한다.

 

이 방법을 통해, 이모지만 걸러내고 특수문자는 포함할 수 있었다.

해결!

 

EmojiParser의 다양한 사용법은 하단의 링크를 참조하세요

https://www.javatips.net/api/emoji-java-master/src/test/java/com/vdurmont/emoji/EmojiParserTest.java

 

EmojiParserTest.java example

package com.vdurmont.emoji; import com.vdurmont.emoji.EmojiParser.AliasCandidate; import com.vdurmont.emoji.EmojiParser.FitzpatrickAction; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.util.ArrayList;

www.javatips.net

https://javadoc.io/doc/com.vdurmont/emoji-java/latest/index.html

 

emoji-java 5.1.1 javadoc (com.vdurmont)

Latest version of com.vdurmont:emoji-java https://javadoc.io/doc/com.vdurmont/emoji-java Current version 5.1.1 https://javadoc.io/doc/com.vdurmont/emoji-java/5.1.1 package-list path (used for javadoc generation -link option) https://javadoc.io/doc/com.vdur

javadoc.io

 

댓글