Преобразование символа нижнего регистра в массиве символов в символ верхнего регистра (java)

Привет, я пытаюсь написать небольшой сегмент кода, который проверяет, является ли каждый char в массиве char строчными или прописными буквами. Прямо сейчас он использует ASCII-номер символа для проверки. После проверки он должен преобразовать char в верхний регистр, если это еще не так:

for (int counter = 0; counter < charmessage.length; counter++) {
    if (91 - charmessage[counter] <= 0 && 160 - charmessage[counter] != 0) {
    charmessage[counter] = charmessage[counter].toUpperCase();
    } 
}

charmessage уже инициализирован ранее в программе. Часть 160 предназначена для того, чтобы убедиться, что пробел не преобразуется в верхний регистр. Как заставить метод .toUpperCase работать?


person The Progenitor    schedule 19.05.2013    source источник
comment
И еще кое-что из Character Документации: В общем, String.toUpperCase() следует использовать для преобразования символов в верхний регистр. Методы сопоставления регистра строк имеют несколько преимуществ по сравнению с методами сопоставления регистра символов. Методы сопоставления регистра строк могут выполнять сопоставления с учетом локали, контекстно-зависимые сопоставления и сопоставления символов 1:M, в то время как методы сопоставления регистра символов не могут. Просто что-то иметь в виду :)   -  person T045T    schedule 19.05.2013


Ответы (2)


Я бы сделал это так. Сначала проверьте, является ли символ буквой и является ли он строчным. После этого просто используйте Character.toUpperCase(char ch)

if(Character.isLetter(charmessage[counter]) && Character.isLowerCase(charmessage[counter])){
    charmessage[counter] = Character.toUpperCase(charmessage[counter]);
}
person pad    schedule 19.05.2013
comment
Спасибо чувак! Я сделал это только с помощью ASCII, потому что не знал, что isLetter существует. - person The Progenitor; 19.05.2013
comment
Тест isLetter() либо избыточен, либо слишком ограничителен. См. Javadoc для isLowerCase(). Собственно говоря, таков и весь тест: см. Javadoc для toUpperCase(). - person user207421; 20.05.2013

Вы можете использовать Character#toUpperCase. для этого. Пример:

char a = 'a';
char upperCase = Character.toUpperCase(a);

Однако у него есть некоторые ограничения. Очень важно, чтобы вы знали, что мир знает гораздо больше символов, которые могут поместиться в 16-битном диапазоне.

person Konstantin Yovkov    schedule 19.05.2013