怎么样?从Int我可以获得Upper Char值吗?

时间:2018-03-06 15:18:59

标签: java type-conversion decorator

我有一个java问题,我有点困惑。 一直在寻找并测试一些东西但没有任何成功。

我有这个FilterWriter类,必须将我的字符串,char和int更改为它的上限值。

 public class UpperCaseFilterWriter extends FilterWriter {

 public UpperCaseFilterWriter(Writer wrappedWriter) {
    super(wrappedWriter);
 }

 @Override
 public void write(String str, int off, int len) throws IOException {
   while(len-- > 0){
     write(str.charAt(off++));
   }
 }

 @Override
 public void write(char[] cbuf, int off, int len) throws IOException {
   while(len-- > 0){
     write(cbuf[off++]);
   }
 }

 @Override
 public void write(int c) throws IOException {
   //TODO Change int c to upper int c
   out.write(c);
 }
}

现在我的write(String) method和我的write(char[]) method正在调用我的write(int c) method

但现在我需要

  1. 拿我的int c
  2. 将其转换为字符

  3. 将字符(如果是字母)更改为其上限值

  4. 再次将其转换为Int以将其传递给我的方法write(int c)
  5. 它采用UTF-8编码,所以我有“é”或“ä”字母。

    我已经尝试过int - > char - >上部字符 - > int以不同的方式但不成功。

    如果有人可以帮我解决这个问题,或者给我一些信息,那就太棒了。也许我需要以其他方式做到这一点,或者有一种方法可以通过一些字节编码/解码来实现...我不知道。

    谢谢!

1 个答案:

答案 0 :(得分:1)

Character.toUpperCase是您所需要的:它可以直接转换代码点:

 @Override
 public void write(int c) throws IOException {
   //TODO Change int c to upper int c
   out.write(Character.toUpperCase(c));
 }

它正确处理非ascii字符,例如成功将é转换为É