首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Java打印前1000个Unicode字符

用Java打印前1000个Unicode字符
EN

Stack Overflow用户
提问于 2018-10-06 04:14:21
回答 2查看 1.4K关注 0票数 0

我需要用Java打印前1000个Unicode字符,问题是我不知道如何将文本和unicode的十六进制代码组合在一起。

例如:我想打印空格,所以在println命令中插入"\u00“,在while循环中我需要添加另外的200,但我不能像插入文本一样插入它们!("00")。

我给你我试过的..。我已经在互联网上找到了这个代码,我已经修改了它,并且有一点be,所以如果你也能修复它,我会很棒的,哈哈!

代码语言:javascript
复制
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:有时,编译器会随机给我这个错误:

代码语言:javascript
复制
at unicodetest.UnicodeTest.main(Char: 83 ==> 83
UnicodeTest.java:10)

第10行是:

代码语言:javascript
复制
System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + t[i/16] + t[i++%16]);

编辑:它应该如下所示:

代码语言:javascript
复制
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 ==> 'ϧ'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-06 04:35:32

这是一个略有不同的答案,它不使用流。你应该能够修改它以产生你喜欢的任何输出。

我使用了一些技巧。第一个是char是一个整数,可以提升为int。因此,为了初始化计数器,我实际上给它分配了第一个ASCII字符,即' ' (一个空格)。前32个ASCII字符是控制字符,不打印,所以我只跳过它们。

第二种方法是,我没有调用Character.toChars(),而是将其强制转换为intchar。只要您完全控制输入并且没有范围误差,这就可以很好地工作。

代码语言:javascript
复制
   public static void main( String[] args ) {
      for( int i = ' '; i < 1000; i++ ) 
         System.out.println( "Char: " + Integer.toHexString( i ) 
             + " ==> " + (char)i );
   }
票数 4
EN

Stack Overflow用户

发布于 2018-10-06 04:17:56

使用Character.toChars(int)将代码点转换为表示字符。下面将打印U+0000和U+03E8之间的所有UTF字符,前1000个代码点。

代码语言:javascript
复制
public static void main(String[] args) {
  IntStream.range(0, 1000)
    .mapToObj(i -> "Char: " + i + " ==> " + new String(Character.toChars(i)))
    .forEach(System.out::println);
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52672728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档