如何在Java中輕鬆處理Emoji Unicode - Udayakumar

banq發表於2020-10-02

此類提供了一種方法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


完整的表情符號列表
 

相關文章