2010-10-25 89 views
1

我在Java應用程序中向標準輸出打印來自UTF-8範圍的一些字符。我的控制檯配置爲支持UTF-8。我的問題是,有時當我決定打印10個字符時,例如,我看到的字符數小於10.Unicode和控制檯解釋

我認爲這是由於解釋某些字符的控制檯。是否有一些unicode字符可以被解釋爲:刪除前一個字符?是否有可能將它們從輸出中排除(這些字符的代碼點是什麼)?

回答

1

使用回車或退格字符像你描述的,你可以得到結果。比如這個小測試程序...

public class Test { 
    public static void main(String... args) { 
     System.out.println("abc\rdef\u0008g"); 
    } 
} 

...在我的終端(Ubuntu的)

$ java Test 
deg 
$ 

\r版畫是回車,\u0008表示退格字符。 (回車將光標回第一列,退格鍵發送回一列)


要刪除所有這些,所謂的「控制字符」你可以這樣做:

myString = myString.replaceAll("\\p{Cntrl}", ""); 

the docs

\p{Cntrl}            控制字符:[\ x00- \ x1F \ x7F]

+0

我使用myString.replaceAll(「[\ r \ u0008]」,「」)從輸出中刪除了這些字符。不過,我仍然得到一些截斷的輸出。我認爲還有其他字符:( – Laurent 2010-10-25 15:09:49

+0

更新了我的答案。 – aioobe 2010-10-25 19:06:35

+0

它的工作原理。非常感謝:) – Laurent 2010-10-26 07:24:43