我有一个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
。
但现在我需要
将其转换为字符
将字符(如果是字母)更改为其上限值
它采用UTF-8编码,所以我有“é”或“ä”字母。
我已经尝试过int - > char - >上部字符 - > int以不同的方式但不成功。
如果有人可以帮我解决这个问题,或者给我一些信息,那就太棒了。也许我需要以其他方式做到这一点,或者有一种方法可以通过一些字节编码/解码来实现...我不知道。
谢谢!
答案 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字符,例如成功将é
转换为É