2016-11-01 72 views
1

我無法找到明確的答案。 ECLIPSE IDE是否支持emojis?在堆棧溢出中,我已經閱讀了很多關於代理對的內容,但是我無法在此得到明確的答案。Eclipse IDE使用代理對處理emojis

我不得不閱讀文本文件中的字符,我使用FileInputStream。

是否有可能使用代理對處理表情符號?我想要使​​用選擇幾個蘋果emojis。這些具體的: 通過處理它們,我的意思是我想在文件中讀取時將它們識別爲特定的表情符號。

如果是這樣,有人可以給我一個例子嗎?

+0

簡短的回答:是的,這是可能的。 「處理表情符號」是什麼意思?你想用他們做什麼? – VGR

+0

通過處理它們,我的意思是我希望能夠單獨識別它們並根據它是哪種表情符號來返回。 – Wanda

回答

1

InputStreams用於讀取字節; Readers用於閱讀字符。所以你應該使用從Files.newBufferedReader獲得的Reader,或者使用FileReader或者InputStreamReader。

儘管Java在字符串中使用代理對來表示emojis和許多其他類型的Unicode字符,但您不需要直接處理代理對。代理值僅存在,因爲許多字符值對Java char類型而言太大。如果您將單個字符作爲int值(例如,使用CharSequence.codePoints方法)讀取,則每次都會得到整個字符值,並且您將永遠不會看到或不得不處理替代值。

在撰寫本文時,emojis由Unicode定義在Emoticons塊中,Supplemental Symbols and Pictographs塊的一部分以及Miscellaneous Symbols塊中的三個遺留字符。

因此,使用一個BufferedReader和遍歷字符數據與整數可能是這樣的:

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); 
     } 
    }); 
} 
+0

非常感謝,這對我們有很大的幫助。感謝您的詳細回覆。我有一種感覺,我沒有使用正確的文件閱讀器。 – Wanda