95 Stimmen

Wie wird jeder erste Buchstabe eines Wortes in einer Zeichenkette großgeschrieben?

Ich habe eine Zeichenkette: "hello good old world" und ich möchte jeden Anfangsbuchstaben eines jeden Wortes großschreiben, nicht den ganzen String mit .toUpperCase(). Gibt es eine vorhandene Java-Hilfe, die diese Aufgabe erfüllt?

13voto

binkdm Punkte 345

Hier ist eine sehr einfache, kompakte Lösung. str enthält die Variable von was auch immer Sie die Großschreibung auf tun wollen.

StringBuilder b = new StringBuilder(str);
int i = 0;
do {
  b.replace(i, i + 1, b.substring(i,i + 1).toUpperCase());
  i =  b.indexOf(" ", i) + 1;
} while (i > 0 && i < b.length());

System.out.println(b.toString());

Es ist am besten, mit StringBuilder zu arbeiten, weil String unveränderlich ist und es ineffizient ist, für jedes Wort neue Strings zu erzeugen.

11voto

user877139 Punkte 544

Ich versuche, den Speicherplatz zu schonen, indem ich den String in mehrere Strings aufteile und die von Darshana Sri Lanka gezeigte Strategie verwende. Außerdem werden alle Leerzeichen zwischen den Wörtern behandelt, nicht nur das Zeichen " ".

public static String UppercaseFirstLetters(String str) 
{
    boolean prevWasWhiteSp = true;
    char[] chars = str.toCharArray();
    for (int i = 0; i < chars.length; i++) {
        if (Character.isLetter(chars[i])) {
            if (prevWasWhiteSp) {
                chars[i] = Character.toUpperCase(chars[i]);    
            }
            prevWasWhiteSp = false;
        } else {
            prevWasWhiteSp = Character.isWhitespace(chars[i]);
        }
    }
    return new String(chars);
}

7voto

Rupendra Sharma Punkte 240
    String s = "java is an object oriented programming language.";      
    final StringBuilder result = new StringBuilder(s.length());    
    String words[] = s.split("\\ "); // space found then split it  
    for (int i = 0; i < words.length; i++) 
         {
    if (i > 0){
    result.append(" ");
    }   
    result.append(Character.toUpperCase(words[i].charAt(0))).append(
                words[i].substring(1));   
    }  
    System.out.println(result);  

Ausgabe: Java ist eine objektorientierte Programmiersprache.

4voto

amoran Punkte 1049

Sie können auch einen Blick werfen auf StringUtils Bibliothek. Sie enthält einen Haufen cooler Sachen.

3voto

Reactgular Punkte 47678

Mein Code, nachdem ich einige der obigen Antworten gelesen habe.

/**
 * Returns the given underscored_word_group as a Human Readable Word Group.
 * (Underscores are replaced by spaces and capitalized following words.)
 * 
 * @param pWord
 *            String to be made more readable
 * @return Human-readable string
 */
public static String humanize2(String pWord)
{
    StringBuilder sb = new StringBuilder();
    String[] words = pWord.replaceAll("_", " ").split("\\s");
    for (int i = 0; i < words.length; i++)
    {
        if (i > 0)
            sb.append(" ");
        if (words[i].length() > 0)
        {
            sb.append(Character.toUpperCase(words[i].charAt(0)));
            if (words[i].length() > 1)
            {
                sb.append(words[i].substring(1));
            }
        }
    }
    return sb.toString();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X