簡體   English   中英

用Java打印前1000個Unicode字符

[英]Print the first 1000 Unicode characters in Java

我需要在Java中打印前1000個unicode字符,問題是我不知道如何將Unicode的文本和十六進制代碼放在一起。

示例:我想打印空白,因此在println命令中插入“ \\ u00”,在while循環中我需要添加其他2 00,但是我不能像文本一樣插入它們! (“ 00”)。

我給了我我嘗試過的東西...我已經在互聯網上找到了這段代碼,並且已經對其進行了修改,並且有點小蟲子,所以如果您也可以修復它,我會很棒的啊哈哈!

public static void main(String[] args) {
    char t[]="0123456789abcdef".toCharArray();
    int i = 0;

    while(i<1000) {
            System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + "\u00" + t[i/16] + t[i++%16]);
    }
}

PS:有時是隨機的,編譯器給我這個錯誤:

at unicodetest.UnicodeTest.main(Char: 83 ==> 83
UnicodeTest.java:10)

第10行是:

System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + t[i/16] + t[i++%16]);

編輯:它應該看起來像這樣:

Char: 20 ==> ' '
Char: 21 ==> '!'
Char: 22 ==> '"'
Char: 23 ==> '#'
Char: 24 ==> '$'
Char: 25 ==> '%'
Char: 26 ==> '&'
Char: 27 ==> '''
Char: 28 ==> '('
Char: 29 ==> ')'
Char: 2a ==> '*'
Char: 2b ==> '+'
Char: 2c ==> ','
Char: 2d ==> '-'
Char: 2e ==> '.'
Char: 2f ==> '/'
Char: 30 ==> '0'
Char: 31 ==> '1'
Char: 32 ==> '2'
Char: 33 ==> '3'
Char: 34 ==> '4'
Char: 35 ==> '5'
Char: 36 ==> '6'
Char: 37 ==> '7'
Char: 38 ==> '8'
Char: 39 ==> '9'
Char: 3a ==> ':'
Char: 3b ==> ';'
Char: 3c ==> '<'
Char: 3d ==> '='
Char: 3e ==> '>'
Char: 3f ==> '?'
Char: 40 ==> '@'
Char: 41 ==> 'A'
Char: 42 ==> 'B'
Char: 43 ==> 'C'
Char: 44 ==> 'D'
Char: 45 ==> 'E'
Char: 46 ==> 'F'
Char: 47 ==> 'G'
...
Char: 37b ==> 'ͻ'
Char: 37c ==> 'ͼ'
Char: 37d ==> 'ͽ'
...
Char: 3e4 ==> 'Ϥ'
Char: 3e5 ==> 'ϥ'
Char: 3e6 ==> 'Ϧ'
Char: 3e7 ==> 'ϧ'

使用Character.toChars(int)從代碼點轉換為代表字符。 下面將打印U + 0000和U + 03E8之間的所有UTF字符,前1000個代碼點。

public static void main(String[] args) {
  IntStream.range(0, 1000)
    .mapToObj(i -> "Char: " + i + " ==> " + new String(Character.toChars(i)))
    .forEach(System.out::println);
}

這是一個略有不同的答案,它不使用流。 您應該能夠對其進行修改以產生所需的任何輸出。

我正在使用一些技巧。 首先是char是一個整數,可以提升為int 因此,要初始化計數器,我實際上為它分配了第一個ASCII字符,即' ' (一個空格)。 前32個ASCII字符是控制字符,不會打印,因此我將其跳過。

第二個是,我沒有將Character.toChars()調用,而是將其int轉換為intchar 只要您完全控制輸入並且沒有范圍錯誤,此方法就可以正常工作。

   public static void main( String[] args ) {
      for( int i = ' '; i < 1000; i++ ) 
         System.out.println( "Char: " + Integer.toHexString( i ) 
             + " ==> " + (char)i );
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM