2017-03-03 40 views
0

我試着循環遍歷字符串中的字符並打印出來。除了Deseret Long I()以外,他們都打印得很好。我不知道是否有其他方法可以做到這一點,以便正確打印。這裏是我的代碼:Java:如何遍歷字符串中具有代理對的字符並將其打印出來?

package javaapplication13; 
public class JavaApplication13 { 
    public static void main(String[] args) { 
     String s = "hy\u0500"; 
     System.out.println(s); 
     final int length = s.length(); 
     for (int offset = 0; offset < length;) { 
      final int codepoint = s.codePointAt(offset); 
      System.out.println((char) (codepoint)); 
      offset += Character.charCount(codepoint); 
     } 
    } 
} 

輸出看起來像這樣(Netbeans的):

run: 
hyԀ 
h 
䍡 
y 
Ѐ 
Ԁ 
BUILD SUCCESSFUL (total time: 0 seconds) 

回答

0

你的問題是由您嘗試轉換intchar(4個字節2個字節)造成的事實。在代理對的情況下,codepoint變量中的值不適合一個char。看,它叫做,因爲它是一對字符。我認爲最簡單的方法是使用String.Substring()方法。或者你可以用這種方式將它轉換爲char數組:char[] ch = Character.toChars(codepoint);,你可以通過簡單的new String(ch)將這個數組轉換回字符串。

+0

'System.out.println(Character.toChars(codepoint));'工作!謝謝! –

相關問題