이모 티 콘 자바 코드 에서 처리 api
2960 단어 작은 기술 점
주: 글 의 모든 표 와 인 코딩 이 대응 하지 않 습 니 다. 원인: eclipse 에서 편집 한 표정 은 이 곳 에서 정상적으로 표시 되 지 않 습 니 다. 모든 것 은 현재 편집기 의 표정 을 마음대로 사용 합 니 다.
(이모 티 콘 문자열 예. 클 라 이언 트 가 server 에 제출 한 데 이 터 는 String 변 수 를 사용 하여 받 은 값 입 니 다. 일반 utf 8 인 코딩 )
1. 문자열 이 표정 인지 판단
2. 문자열 의 모든 이모 티 콘 문자열 가 져 오기 혹시 모든 비 표정 문자열
3. 이모 티 콘 문자열 을 HtmlDecimal 예: -> ;#128516;
4. 이모 티 콘 문자열 을 Hexadecimal 예: -> ;#x1f466;
5 、 이모 티 콘 문자열 을 유 니 코드 로 변환
6、 (3, 4, 5) 의 반전
7. 표정 의미 분석
해결 방향:
1. 이모 티 콘 이모 티 콘, html Decimal 이 필요 합 니 다. 、 hexadecimal, 의미 맵
2, 데이터 테이블, 나머지 는 API 의 처리, O (∩ ∩) O 하하 ~
마침 github 에 이 jar 패키지 와 데이터 가 있 습 니 다.
com.vdurmont emoji-java 3.1.3
이 jar 가방 에 emojis. json 파일 이 있 습 니 다. 위 에서 언급 한 맵 입 니 다. 구 조 는 다음 과 같다.
{ "emoji": "", "description": "smiling face with open mouth and smiling eyes", "aliases": [ "smile" ], "tags": [ "happy", "joy", "pleased" ] }, ............
json 데이터 에 의미 와 태그 가 있 는 것 을 볼 수 있 습 니 다. ,HtmlDecimal 화해시키다 Hexadecimal EmojiLoader:: loadEmojis 분석 을 통 해 (jar 패키지 에 총 6 개의 자바 파일 이 있 음)
질문 EmojiParser , EmojiManager 대응 하 는 함 수 를 찾 을 수 있 습 니 다.
소스 코드 나... https://github.com/vdurmont/emoji-java
질문
public static String getUnicode(String source){
String returnUniCode=null;
String uniCodeTemp=null;
for(int i=0;i
문제 2 는 자기가 그때... EmojiParser 중 확 장 된 두 함수 다음 과 같다.
/**
*
* @param input
* @return
*/
public static String getNonEmojiString(String input) {
int prev = 0;
StringBuilder sb = new StringBuilder();
List replacements = getUnicodeCandidates(input);
for (UnicodeCandidate candidate : replacements) {
sb.append(input.substring(prev, candidate.getEmojiStartIndex()));
prev = candidate.getFitzpatrickEndIndex();
}
return sb.append(input.substring(prev)).toString();
}
/**
*
* @param input
* @return
*/
public static String getEmojiUnicodeString(String input){
EmojiTransformer transformer = new EmojiTransformer() {
public String transform(UnicodeCandidate unicodeCandidate) {
return unicodeCandidate.getEmoji().getHtmlHexadecimal();
}
};
StringBuilder sb = new StringBuilder();
List replacements = getUnicodeCandidates(input);
for (UnicodeCandidate candidate : replacements) {
sb.append(transformer.transform(candidate));
}
return parseToUnicode(sb.toString());
}
다음 테스트 실행:
String str = "aaaa