我有一个包含一个句子的字节数组。我需要将这句话上的小写字母转换成大写字母。这是我所做的功能:
public void CharUpperBuffAJava(byte[] word) {
for (int i = 0; i < word.length; i++) {
if (!Character.isUpperCase(word[i]) && Character.isLetter(word[i])) {
word[i] -= 32;
}
}
return cchLength;
}
它可以很好地处理诸如“一杯水”之类的句子。问题是它必须适用于所有 ANSI 字符,包括 "ç,á,é,í,ó,ú" 等等。Character.isLetter 方法不适用于这些字母,因此它们不会转换为大写字母。
您知道如何将这些 ANSI 字符识别为 Java 中的字母吗?
编辑
如果有人想知道,我在回答后再次做了方法,现在看起来像这样:
public static int CharUpperBuffAJava(byte[] lpsz, int cchLength) {
String value;
try {
value = new String(lpsz, 0, cchLength, "Windows-1252");
String upperCase = value.toUpperCase();
byte[] bytes = upperCase.getBytes();
for (int i = 0; i < cchLength; i++) {
lpsz[i] = bytes[i];
}
return cchLength;
} catch (UnsupportedEncodingException e) {
return 0;
}
}