如何在Java中轻松处理Emoji Unicode - Udayakumar

20-10-02 banq

此类提供了一种方法toEmoji(),可将Unicode替代为带有视觉上可表示的表情符号:

package org.appsweaver.experiments.easily_handle_emoji_unicode;

/**
 * 
 * @author udhansingh
 *
 */
public class UnicodePointEntry {
    private final int row;
    private final String name;
    private final String[] codes;

    public UnicodePointEntry(int row, String name, String codes) {
        this.row = row;
        this.name = toName(name);
        this.codes = toCodes(codes);
    }
    
    public int getRow() {
        return row;
    }

    public String[] getCodes() {
        return codes;
    }
    
    public String getCodesAsCSV() {
        if(codes == null || codes.length == 0) return null;
        
        if(codes.length == 1) {
            return codes[0];
        } else {
            final StringBuilder stringBuilder = new StringBuilder();
            for(int index = 0; index < codes.length - 1; index++) {
                stringBuilder.append(codes[index]).append(", ");
            }
            stringBuilder.append(codes[codes.length - 1]);
            
            return stringBuilder.toString();
        }
    }

    public String getName() {
        return name;
    }

    public String toEmoji() {
        final StringBuilder stringBuilder = new StringBuilder();
        for(String code : codes) {
            final Integer intCode = Integer.decode(code.trim());
            for(Character character : Character.toChars(intCode)) {
                stringBuilder.append(character);
            }
        }
        return stringBuilder.toString();
    }
    
    private String[] toCodes(String text) {
        return text.replace("U+", "0x").split(" ");
    }
    
    private String toName(String text) {
        // Take out characters that invalidate java naming convention
        return text.replace(" ", "_")
            .replace(":", "")
            .replace("-", "_")
            .replace(".", "")
            .replace("&", "_and_")
            .replace("“", "")
            .replace("”", "")
            .replace("’", "_")
            .replace(",_", "_or_")
            .replace("(", "")
            .replace(")", "")
            .replace("#", "hash")
            .replace("*", "asterik")
            .replace("!", "bang")
            .replace("1st", "first")
            .replace("2nd", "second")
            .replace("3rd", "third")
            .replace("⊛_", "")
            .replace("package", "package_box")
            // do this at end
            .replaceAll("__", "_")
            .toLowerCase()
        ;
    }
}

代码在GitHub中可用

要将表情符号打印到显示器上,请运行

   mvn -DenumCompatibleSyntax = false

要生成显示的枚举值,请运行

   mvn -DenumCompatibleSyntax = true

完整的表情符号列表

 

猜你喜欢