如何从java中的另一个角色获取角色

时间:2014-05-26 06:03:46

标签: java

假设A的unicode是\ u9876。我希望在A之后得到7个字符,即H. 是否有某种方法可以做到(A的unicode)+ 7然后将其转换为char。

3 个答案:

答案 0 :(得分:7)

这篇文章不是一个答案,而是一个"混乱的清理"交。

首先,Unicode代码点的范围从U + 0000到U + 10FFFF;在所有这些范围内,一些代码点实际上是无效的。

Java char本质上是一个UTF-16代码单元。对于基本多语言平面之外的Unicode代码点,即U + FFFF以上,需要两个字符来编码一个代码点;见Character.toChars()。对于BMP内的代码点,Unicode和char之间存在一对一的映射。

除此之外,尽管有特殊的作用,char是一种数字类型;它也是Java中唯一的无符号数字类型。您可以对其使用算术运算,对于BMP内的代码点,将{7}添加到char,这是' \ u9876'将给出代码点' \ u9883'。

但鉴于上述情况,这是一个危险的行动......

(更确切地说,在BMP之上,Character.toChars()将返回一对"对;返回数组的第一个元素将是一个主要代理,第二个元素将是一个跟踪代理; Java API仍然使用旧的Unicode术语,并分别将它们称为"高"和#34;低"代理。有关详细信息,请参阅Wikipedia article on UTF-16,它做得非常好解释什么是什么的工作

答案 1 :(得分:1)

你已经给出了答案。只需将七个值添加到char值,java就会知道该怎么做。

答案 2 :(得分:0)

不是整数推广有趣吗?很高兴认为你有一件事,当你真的有另一件事。

看看这是否有助于你做你想做的事情:

char test = '\u0041'; 
char add = 7;
char sum1 = '\u0041' + 7;      //Works
//char sum2 = '\u0041' + add;  //Type mismatch, cannot convert from int to char
//char sum3 = test + 7;        //Type mismatch, cannot convert from int to char
//char sum2 = test + (char)7;  //Type mismatch, cannot convert from int to char
//char sum4 = (int) test + 7;  //Type mismatch, cannot convert from int to char
char sum5 = (char) ( (int)test + 7 );//Works
char sum6 = (char) ( test + add );   //Works
//char sum7 = test + add;      //Type mismatch, cannot convert from int to char

System.out.println("test = " + test);
System.out.println("sum1 = " + sum1);
System.out.println("sum5 = " + sum5);
System.out.println("sum6 = " + sum6);

为什么呢?整数推广。 Java只将char作为内存中的字符。在CPU中它们变成整数。大多数情况下,这种情况发生在我们身上并且你没有注意到它。我想这次你做到了。简而言之,您忘了将您的char转回char。有趣的东西。

此外,A的代码是\ u0041

9876就是这个小家伙:顶 http://unicode-table.com/en/search/?q=9876

和9883就是这个小家伙:颃 http://unicode-table.com/en/search/?q=9883