有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse IDE使用代理项对处理表情

我找不到一个明确的答案。EclipseIDE支持表情符号吗?我在这里读了很多关于堆栈溢出的代理项对的文章,但我无法得到一个明确的答案

我必须一个字符一个字符地读取文本文件,我使用的是FileInputStream

是否可以使用代理项对处理表情符号?我想使用一些精选的苹果表情符号。具体而言:💫 🌟 🌜🌛 通过处理它们,我的意思是我想在阅读文件时将它们识别为特定的表情符号

如果是的话,有人能给我举个例子吗


共 (1) 个答案

  1. # 1 楼答案

    输入流用于读取字节Readers用于读取字符。所以你应该使用从文件中获取的阅读器。NewBuffereReader,或使用文件读取器或InputStreamReader

    尽管Java在字符串中使用代理项对来表示表情符号和许多其他类型的Unicode字符,但您不需要直接处理代理项对。代理项值的存在只是因为许多字符值对于Java char类型来说太大。如果将单个字符作为int值读取(例如,使用CharSequence.codePoints方法),每次都会得到完整的字符值,并且永远不会看到或必须处理代理值

    在撰写本文时,Unicode将表情符号定义为Emoticons块中的表情符号,是Supplemental Symbols and Pictographs块的一部分,以及Miscellaneous Symbols块中的三个遗留字符

    因此,使用BufferedReader并使用int遍历字符数据可能如下所示:

    try (BufferedReader reader =
        Files.newBufferedReader(Paths.get(filename), Charset.defaultCharset())) {
    
        IntStream chars = reader.lines().flatMapToInt(String::codePoints);
        chars.forEachOrdered(c -> {
            if ((c >= 0x2639 && c <= 0x263b) ||
                (c >= 0x1f600 && c < 0x1f650) ||
                (c >= 0x1f910 && c < 0x1f930)) {
    
                processEmoji(c);
            }
        });
    }