Перетворення на велику та малу регістр у Java


76

Я хочу перетворити перший символ рядка у верхній регістр, а решту символів - у нижній регістр. Як я можу це зробити?

Приклад:

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

Відповіді:


116

Спробуйте це для розміру:

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();
}

В основному він обробляє спеціальні випадки порожнього і односимвольного рядка спочатку, а в іншому випадку правильно використовує рядок із двома символами. І, як зазначено в коментарі, односимвольний особливий випадок не потрібен для функціональності, але я все одно вважаю за краще бути явним, особливо якщо це призводить до меншої кількості марних дзвінків, таких як підрядок, щоб отримати порожній рядок, нижній регістр його, а потім додавши його також.


Це має непотрібну справу. Дивіться мою відповідь.
Еллен Спертус

1
@espertus, ти повинен опублікувати свою відповідь, перш ніж просити людей поглянути на неї, інакше ти, мабуть,
зведеш

Вибачте, @paxdiablo. Дякую за смайлик. :-)
Еллен Спертус,

Ви маєте на увазі більше божевільного, ніж хтось, хто чекає, щоб побачити, як хтось із 200-кратною репутацією відповість на родича n00b, який стверджує, що має кращу відповідь? ;-)
Еллен Спертус

19
String a = "ABCD"

використовуючи це

a.toLowerCase();

всі літери будуть перетворені в прості, "abcd",
використовуючи це

a.toUpperCase()

усі літери будуть перетворені на великі, "ABCD"

це перетворює першу літеру у велику:

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

це перетворити іншу букву Simple

a.substring(1).toLowerCase();

ми можемо отримати суму цих двох

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

result = "Abcd"



8
String inputval="ABCb";
String result = inputval.substring(0,1).toUpperCase() + inputval.substring(1).toLowerCase();

Змінив би "ABCb" на "Abcb"


7
Не забувайте обробляти, якщо inputval дорівнює 0 або 1.
Стів Куо

5

Я вважаю це простішим, ніж будь-яка попередня правильна відповідь. Я також кину явадок. :-)

/**
 * 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.


2
Версія Paxdiablo уникає зайвих об'єднань, коли довжина s. становить 1. Ця версія має менше рядків коду, але спірним є те, чи є вона "простішою". Загалом, стислість не означає більш читабельну. Продуктивність ... сказати складно, не в останню чергу тому, що це залежить від ймовірності односимвольних рядків.
Stephen C

1
@StephenC Досить справедливо.
Еллен Спертус,

-5
/* 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  :+*/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.