Преобразование в верхний и нижний регистр в Java - PullRequest
69 голосов
/ 04 марта 2010

Я хочу преобразовать первый символ строки в верхний регистр, а остальные символы в нижний регистр. Как мне это сделать?

Пример:

String inputval="ABCb" OR "a123BC_DET" or "aBcd"
String outputval="Abcb" or "A123bc_det" or "Abcd"

Ответы [ 6 ]

107 голосов
/ 04 марта 2010

Примерьте размер:

String properCase (String inputVal) {
    // Empty strings should be returned as-is.

    if (inputVal.length() == 0) return "";

    // Strings with only one character uppercased.

    if (inputVal.length() == 1) return inputVal.toUpperCase();

    // Otherwise uppercase first letter, lowercase the rest.

    return inputVal.substring(0,1).toUpperCase()
        + inputVal.substring(1).toLowerCase();
}

В основном он сначала обрабатывает специальные случаи пустой строки и строки из одного символа и в противном случае корректно обрабатывает строку из двух символов. И, как отмечено в комментарии, особый случай из одного символа не требуется для функциональности, но я все же предпочитаю быть явным, особенно если это приводит к меньшему количеству бесполезных вызовов, таких как подстрока для получения пустой строки, строчные это, затем добавляя это также.

14 голосов
/ 30 сентября 2016
String a = "ABCD"

используя это

a.toLowerCase();

все буквы будут преобразованы в простые, "abcd"
используя это

a.toUpperCase()

все буквы будут преобразованы в прописные, "ABCD"

это преобразовать первую букву в заглавную:

a.substring(0,1).toUpperCase()

это преобразование другой буквы, простой

a.substring(1).toLowerCase();

мы можем получить сумму этих двух

a.substring(0,1).toUpperCase() + a.substring(1).toLowerCase();

результат = "Abcd"

10 голосов
/ 04 марта 2010

WordUtils.capitalizeFully(str) из apache commons-lang имеет точную семантику, как требуется.

8 голосов
/ 04 марта 2010
String inputval="ABCb";
String result = inputval.substring(0,1).toUpperCase() + inputval.substring(1).toLowerCase();

Изменит "ABCb" на "Abcb"

3 голосов
/ 16 ноября 2015

Я считаю это проще, чем любой предыдущий правильный ответ. Я также добавлю в Javadoc. : -)

/**
 * Converts the given string to title case, where the first
 * letter is capitalized and the rest of the string is in
 * lower case.
 * 
 * @param s a string with unknown capitalization
 * @return a title-case version of the string
 */
public static String toTitleCase(String s)
{
    if (s.isEmpty())
    {
        return s;
    }
    return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}

Строки длины 1 не нужно рассматривать как особый случай, поскольку s.substring(1) возвращает пустую строку, когда s имеет длину 1.

0 голосов
/ 17 июля 2014
/* This code is just for convert a single uppercase character to lowercase 
character & vice versa.................*/

/* This code is made without java library function, and also uses run time input...*/



import java.util.Scanner;

class CaseConvert {
char c;
void input(){
//@SuppressWarnings("resource")  //only eclipse users..
Scanner in =new Scanner(System.in);  //for Run time input
System.out.print("\n Enter Any Character :");
c=in.next().charAt(0);     // input a single character
}
void convert(){
if(c>=65 && c<=90){
    c=(char) (c+32);
    System.out.print("Converted to Lowercase :"+c);
}
else if(c>=97&&c<=122){
        c=(char) (c-32);
        System.out.print("Converted to Uppercase :"+c);
}
else
    System.out.println("invalid Character Entered  :" +c);

}


  public static void main(String[] args) {
    // TODO Auto-generated method stub
    CaseConvert obj=new CaseConvert();
    obj.input();
    obj.convert();
    }

}



/*OUTPUT..Enter Any Character :A Converted to Lowercase :a 
Enter Any Character :a Converted to Uppercase :A
Enter Any Character :+invalid Character Entered  :+*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...