Konvertieren in Groß- und Kleinschreibung in Java

75

Ich möchte das erste Zeichen einer Zeichenfolge in Großbuchstaben und die restlichen Zeichen in Kleinbuchstaben konvertieren. Wie kann ich es tun?

Beispiel:

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

Antworten:

114

Probieren Sie dies für die Größe an:

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

Grundsätzlich werden Sonderfälle mit leeren Zeichenfolgen und Zeichen mit einem Zeichen zuerst behandelt, und ansonsten werden Fälle mit mehr als zwei Zeichen korrekt behandelt. Und wie in einem Kommentar ausgeführt, wird der Sonderfall mit einem Zeichen für die Funktionalität nicht benötigt, aber ich bevorzuge es immer noch, explizit zu sein, insbesondere wenn dies zu weniger nutzlosen Aufrufen führt, wie z. B. Teilzeichenfolgen, um eine leere Zeichenfolge mit niedrigerer Schreibweise zu erhalten es, dann auch anhängen.

paxdiablo
quelle
Dies hat einen unnötigen Fall. Siehe meine Antwort.
Ellen Spertus
1
@espertus, du solltest deine Antwort posten, bevor du die Leute bittest, sie dir anzusehen, sonst machst du sie wahrscheinlich wahnsinnig :-)
paxdiablo
Entschuldigung, @paxdiablo. Danke für den Smiley. :-)
Ellen Spertus
Meinen Sie wahnsinniger als jemand, der darauf wartet, wie jemand mit dem 200-fachen seines Rufs auf einen relativen n00b reagiert, der behauptet, eine bessere Antwort zu haben? ;-)
Ellen Spertus
19
String a = "ABCD"

mit diesem

a.toLowerCase();

alle Buchstaben zu einfach konvertieren, „ABCD“
dies mit

a.toUpperCase()

Alle Buchstaben werden in Großbuchstaben "ABCD" umgewandelt.

dieser Conver erste Brief an das Kapital:

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

dieser Konverter anderer Buchstabe Einfach

a.substring(1).toLowerCase();

wir können die Summe dieser beiden erhalten

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

Ergebnis = "Abcd"

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

Würde "ABCb" in "Abcb" ändern

Martin
quelle
7
Vergessen Sie nicht zu behandeln, wenn der Eingabewert 0 oder 1 Länge ist.
Steve Kuo
4

Ich halte dies für einfacher als jede vorherige richtige Antwort. Ich werde auch Javadoc werfen. :-)

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

Zeichenfolgen der Länge 1 müssen nicht als Sonderfall behandelt werden, da s.substring(1)die leere Zeichenfolge bei sLänge 1 zurückgegeben wird.

Ellen Spertus
quelle
2
Die Version von Paxdiablo vermeidet unnötige Verkettungen, wenn s.length 1 ist. Diese Version hat weniger Codezeilen, aber es ist fraglich, ob es "einfacher" ist. Prägnanter bedeutet im Allgemeinen nicht besser lesbar. Leistung ... schwer zu sagen, nicht zuletzt, weil es von der Wahrscheinlichkeit von Zeichenfolgen mit einem Zeichen abhängt.
Stephen C
1
@ StephenC Fair genug.
Ellen Spertus
-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  :+*/
Satvant Singh
quelle