Zeichenfolgenkonvertierung in Groß- und Kleinschreibung


99

Gibt es integrierte Methoden, um eine Zeichenfolge als solche in das Format der Groß- und Kleinschreibung zu konvertieren?


3
Jeder, der diese Frage liest: Achten Sie darauf, dass viele der am besten bewerteten Antworten hier nicht für alle Sprachen richtig funktionieren. Sie benötigen eine i18n-fähige Bibliothek für die korrekte Titelbeschreibung, wie z. B. ICU4J (siehe Antwort von Daniel F.).
sffc

Die Antworten mit den höchsten Stimmen enthalten kein Titelformat wie "Die Katze im Hut", daher habe ich meine eigene Methode erstellt
Mladen Adamovic

Antworten:


106

Apache Commons StringUtils.capitalize () oder Commons Text WordUtils.capitalize ()

zB: WordUtils.capitalize("i am FINE") = "I Am FINE"aus WordUtils doc


17
+1 für den Vorschlag zur Verwendung der Bibliothek. Der gesunde Menschenverstand regiert einmal. Ich würde jedoch die Verwendung von WordUtils anstelle von StringUtils vorschlagen, da es flexiblere Optionen bietet.
Skaffman


14
WordUtils.capitalizeFully () war besser für mich, da es Folgendes gibt: WordUtils.capitalizeFully ("Ich bin in Ordnung") = "Mir geht es gut"
theINtoy

2
Nur ein kleines Update, WordUtils ist zu Commons Text gegangen und wird in Commons Lang
msrd0

@ msrd0 Danke. Die Antwort wurde bearbeitet, um dies einzuschließen. Außerdem wurde der Link StringUtils aktualisiert, da er auf eine ältere Version der Bibliothek verweist.
Per Lundberg

60

In der String-Klasse von Java gibt es keine Methodenize () oder titleCase (). Sie haben zwei Möglichkeiten:

 StringUtils.capitalize(null)  = null
 StringUtils.capitalize("")    = ""
 StringUtils.capitalize("cat") = "Cat"
 StringUtils.capitalize("cAt") = "CAt"
 StringUtils.capitalize("'cat'") = "'cat'"
  • schreibe (noch eine andere) statische Hilfsmethode toTitleCase ()

Beispielimplementierung

public static String toTitleCase(String input) {
    StringBuilder titleCase = new StringBuilder(input.length());
    boolean nextTitleCase = true;

    for (char c : input.toCharArray()) {
        if (Character.isSpaceChar(c)) {
            nextTitleCase = true;
        } else if (nextTitleCase) {
            c = Character.toTitleCase(c);
            nextTitleCase = false;
        }

        titleCase.append(c);
    }

    return titleCase.toString();
}

Testfall

    System.out.println(toTitleCase("string"));
    System.out.println(toTitleCase("another string"));
    System.out.println(toTitleCase("YET ANOTHER STRING"));

Ausgänge:

String
Ein weiterer String
NOCH EIN ANDERER STRING

1
Dies ist eine nette kleine Routine, die jedoch für den allgemeineren Fall fehlschlägt, in dem Strings Namen darstellen können. In diesem Fall müsste die Großschreibung auch nach Apostrophen und Bindestrichen erfolgen. Z.B. O'Connor und J. Wilkes-Booth. Natürlich können andere Sprachen zusätzliche Regeln für die Groß- und Kleinschreibung von Titeln haben.
Scottb

... Wenn es das beinhalten würde, würde es nicht eine komplette Wörterbuchsuche benötigen, um herauszufinden, ob das aktuelle Wort ein Name ist? Das scheint für jede Methode ein bisschen viel zu sein.
MMJZ

Dieser Code ist fast in Ordnung, da einige Namen Präpositionen wie de, del, della, dei, da haben können, wie in Maria del Carmen, Maria da Silva, Maria della Salute usw. coderanch.com/t/35096/Programming/…
Junior Mayhé

Bricht das nicht mit Apostroph? Was ist zum Beispiel mit O'Brian?
Sproketboy

1
Hinweis: zur Vermeidung der intern verwendeten Ändern der Größe char[]in StringBuilderich vorschlagen , mitnew StringBuilder(input.length())
Lino - Abstimmung nicht sagen Dank

38

Wenn ich meine Meinung zur Lösung einreichen darf ...

Die folgende Methode basiert auf der von dfa veröffentlichten. Es nimmt die folgende wesentliche Änderung vor (die für die Lösung geeignet ist, die ich zu der Zeit benötigte): Es zwingt alle Zeichen in der Eingabezeichenfolge in Kleinbuchstaben, es sei denn, es wird unmittelbar ein "umsetzbares Trennzeichen" vorangestellt. In diesem Fall wird das Zeichen gezwungen Großbuchstaben.

Eine wesentliche Einschränkung meiner Routine besteht darin, dass davon ausgegangen wird, dass "title case" für alle Gebietsschemas einheitlich definiert ist und durch dieselben Fallkonventionen dargestellt wird, die ich verwendet habe. Daher ist es in dieser Hinsicht weniger nützlich als der Code von dfa.

public static String toDisplayCase(String s) {

    final String ACTIONABLE_DELIMITERS = " '-/"; // these cause the character following
                                                 // to be capitalized
    
    StringBuilder sb = new StringBuilder();
    boolean capNext = true;

    for (char c : s.toCharArray()) {
        c = (capNext)
                ? Character.toUpperCase(c)
                : Character.toLowerCase(c);
        sb.append(c);
        capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed
    }
    return sb.toString();
}

TESTWERTE

ein Faden

maRTin o'maLLEY

John Wilkes-Stand

NOCH EIN ANDERER STRING

AUSGÄNGE

Ein Faden

Martin O'Malley

John Wilkes-Booth

Noch eine Saite


funktioniert nicht mit Ligaturen wie lj, deren Großbuchstabe LJ ist, Titelbuchstabe jedoch Lj. Verwenden Sie Character.toTitleCasestattdessen.
Mihi

@mihi: funktioniert auch nicht mit anderen speziellen Regeln, z. Nachnamen wie McNamara oder MacDonald.
Scottb

Diese Fälle können jedoch von Natur aus nicht behoben werden. Die Verwendung der korrekten Konvertierungsfunktion für Groß- und Kleinschreibung (Titelbuchstabe soll verwendet werden, um ein Wort groß zu schreiben, und nicht in Großbuchstaben gemäß Unicode-Regeln) kann durchgeführt werden (und das ist einfach).
Mihi

Würde dies nicht dazu führen, dass "sie" zu "ihr" wird?
Allicarn

Es ist wahr. Dies funktioniert gut in Namensfeldern, aber, wie Sie betonen, nicht in der allgemeinen Prosa. Es würde nicht einmal bei allen Namen gut funktionieren, insbesondere bei Vulkaniern (T'Pau statt T'pau).
Scottb


10

Sie können Apache Commons langsam wie folgt verwenden:

WordUtils.capitalizeFully("this is a text to be capitalize")

Sie finden das Java-Dokument hier: WordUtils.capitalizeFully Java-Dokument

und wenn Sie die Zwischenräume zwischen den Welten entfernen möchten, können Sie Folgendes verwenden:

StringUtils.remove(WordUtils.capitalizeFully("this is a text to be capitalize")," ")

Sie finden das Java-Dokument für String StringUtils.remove Java-Dokument

Ich hoffe diese Hilfe.



3

Hier ist eine weitere Einstellung, die auf den Antworten von @ dfa und @ scottb basiert und alle Nicht-Buchstaben- / Ziffernzeichen verarbeitet:

public final class TitleCase {

    public static String toTitleCase(String input) {

        StringBuilder titleCase = new StringBuilder(input.length());
        boolean nextTitleCase = true;

        for (char c : input.toLowerCase().toCharArray()) {
            if (!Character.isLetterOrDigit(c)) {
                nextTitleCase = true;
            } else if (nextTitleCase) {
                c = Character.toTitleCase(c);
                nextTitleCase = false;
            }
            titleCase.append(c);
        }

        return titleCase.toString();
    }

}

Gegebener Input:

MARY ÄNN O'CONNEŽ-ŠUSLIK

die Ausgabe ist

Mary Catholn O'Connež-Šuslik


2

Dies ist etwas, das ich geschrieben habe, um snake_case in lowerCamelCase zu konvertieren, aber es könnte leicht an die Anforderungen angepasst werden

private String convertToLowerCamel(String startingText)
{
    String[] parts = startingText.split("_");
    return parts[0].toLowerCase() + Arrays.stream(parts)
                    .skip(1)
                    .map(part -> part.substring(0, 1).toUpperCase() + part.substring(1).toLowerCase())
                    .collect(Collectors.joining());
}

Ihre Antwort funktioniert wie ein Zauber, die Lösung scheint jedoch keine einzelne Wortfolge zu verarbeiten, möglicherweise sollte eine if-Bedingung ausreichen.
Yashgarg1232

1

Ich weiß, dass dies älter ist, aber nicht die einfache Antwort enthält. Ich brauchte diese Methode für meine Codierung, also habe ich sie hier hinzugefügt, einfach zu verwenden.

public static String toTitleCase(String input) {
    input = input.toLowerCase();
    char c =  input.charAt(0);
    String s = new String("" + c);
    String f = s.toUpperCase();
    return f + input.substring(1);
}

1

Ich hatte dieses Problem und habe danach gesucht. Dann habe ich meine eigene Methode mit einigen Java-Schlüsselwörtern erstellt. Ich muss nur die String-Variable als Parameter übergeben und die Ausgabe als String mit dem richtigen Titel erhalten.

public class Main
{
  public static void main (String[]args)
  {
    String st = "pARVeEN sISHOsIYA";
    String mainn = getTitleCase (st);
      System.out.println (mainn);
  }


  public static String getTitleCase(String input)
  {
    StringBuilder titleCase = new StringBuilder (input.length());
    boolean hadSpace = false;
    for (char c:input.toCharArray ()){
        if(Character.isSpaceChar(c)){
            hadSpace = true;
            titleCase.append (c);
            continue;
        }
        if(hadSpace){
            hadSpace = false;
            c = Character.toUpperCase(c);
            titleCase.append (c);
        }else{
            c = Character.toLowerCase(c);
            titleCase.append (c);
        }
    }
    String temp=titleCase.toString ();
    StringBuilder titleCase1 = new StringBuilder (temp.length ());
    int num=1;
    for (char c:temp.toCharArray ())
        {   if(num==1)
            c = Character.toUpperCase(c);
            titleCase1.append (c);
            num=0;
        }
        return titleCase1.toString ();
    }
}

Hier habe ich nirgendwo eine Trimmmethode verwendet, weil ich in meinem Fall eine richtig getrimmte Saite bekommen habe.
Parveen Sishodiya

0

Sie können sehr gut verwenden

org.apache.commons.lang.WordUtils

oder

CaseFormat

von der Google-API.


1
Es wäre nützlich, die Methode und ein Beispiel hinzuzufügen.
Jechaviz

CaseFormat verfügt nur über Formate, die normalerweise in Programmkennungen verwendet werden (UpperCamel, Lower-Hypen, UPPER_UNDERSCORE usw.) und unterstützt nur ASCII-Text. Es würde nicht gut für die Konvertierung in Title Case funktionieren.
M. Justin

0

Ich bin kürzlich auch auf dieses Problem gestoßen und hatte leider viele Namen, die mit Mc und Mac begannen. Am Ende habe ich eine Version von Scottbs Code verwendet, die ich geändert habe, um diese Präfixe zu behandeln, damit sie hier ist, falls jemand sie verwenden möchte.

Es gibt immer noch Randfälle, die übersehen werden, aber das Schlimmste, was passieren kann, ist, dass ein Buchstabe in Kleinbuchstaben geschrieben wird, wenn er groß geschrieben werden sollte.

/**
 * Get a nicely formatted representation of the name. 
 * Don't send this the whole name at once, instead send it the components.<br>
 * For example: andrew macnamara would be returned as:<br>
 * Andrew Macnamara if processed as a single string<br>
 * Andrew MacNamara if processed as 2 strings.
 * @param name
 * @return correctly formatted name
 */
public static String getNameTitleCase (String name) {
    final String ACTIONABLE_DELIMITERS = " '-/";
    StringBuilder sb = new StringBuilder();
    if (name !=null && !name.isEmpty()){                
        boolean capitaliseNext = true;
        for (char c : name.toCharArray()) {
            c = (capitaliseNext)?Character.toUpperCase(c):Character.toLowerCase(c);
            sb.append(c);
            capitaliseNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0);
        }                       
        name = sb.toString();    
        if (name.startsWith("Mc") && name.length() > 2 ) {
            char c = name.charAt(2);
            if (ACTIONABLE_DELIMITERS.indexOf((int) c) < 0) {
                sb = new StringBuilder();
                sb.append (name.substring(0,2));
                sb.append (name.substring(2,3).toUpperCase());
                sb.append (name.substring(3));
                name=sb.toString();
            }               
        } else if (name.startsWith("Mac") && name.length() > 3) {
            char c = name.charAt(3);
            if (ACTIONABLE_DELIMITERS.indexOf((int) c) < 0) {
                sb = new StringBuilder();
                sb.append (name.substring(0,3));
                sb.append (name.substring(3,4).toUpperCase());
                sb.append (name.substring(4));
                name=sb.toString();
            }
        }
    }
    return name;    
}

0

Umstellung auf den richtigen Titel:

String s= "ThiS iS SomE Text";
String[] arr = s.split(" ");
s = "";
for (String s1 : arr) {
    s += WordUtils.capitalize(s1.toLowerCase()) + " ";
}
s = s.substring(0, s.length() - 1);

Ergebnis: "Dies ist ein Text"


0

Verwenden von Spring's StringUtils:

org.springframework.util.StringUtils.capitalize(someText);

Wenn Sie Spring ohnehin bereits verwenden, wird dadurch vermieden, dass ein anderes Framework hinzugefügt wird.


0

Verwenden Sie diese Methode, um eine Zeichenfolge in Groß- und Kleinschreibung zu konvertieren:

static String toTitleCase(String word) {
    return Stream.of(word.split(" "))
            .map(w -> w.toUpperCase().charAt(0)+ w.toLowerCase().substring(1))
            .reduce((s, s2) -> s + " " + s2).orElse("");
}

0

Dieser Konverter wandelt alle Zeichenfolgen, die Kamelbuchstaben, Leerzeichen, Ziffern und andere Zeichen enthalten, in bereinigte Titelbuchstaben um.

/**
 * Convert a string to title case in java (with tests).
 *
 * @author Sudipto Chandra
 */
public abstract class TitleCase {

    /**
     * Returns the character type. <br>
     * <br>
     * Digit = 2 <br>
     * Lower case alphabet = 0 <br>
     * Uppercase case alphabet = 1 <br>
     * All else = -1.
     *
     * @param ch
     * @return
     */
    private static int getCharType(char ch) {
        if (Character.isLowerCase(ch)) {
            return 0;
        } else if (Character.isUpperCase(ch)) {
            return 1;
        } else if (Character.isDigit(ch)) {
            return 2;
        }
        return -1;
    }

    /**
     * Converts any given string in camel or snake case to title case.
     * <br>
     * It uses the method getCharType and ignore any character that falls in
     * negative character type category. It separates two alphabets of not-equal
     * cases with a space. It accepts numbers and append it to the currently
     * running group, and puts a space at the end.
     * <br>
     * If the result is empty after the operations, original string is returned.
     *
     * @param text the text to be converted.
     * @return a title cased string
     */
    public static String titleCase(String text) {
        if (text == null || text.length() == 0) {
            return text;
        }

        char[] str = text.toCharArray();
        StringBuilder sb = new StringBuilder();

        boolean capRepeated = false;
        for (int i = 0, prev = -1, next; i < str.length; ++i, prev = next) {
            next = getCharType(str[i]);
            // trace consecutive capital cases
            if (prev == 1 && next == 1) {
                capRepeated = true;
            } else if (next != 0) {
                capRepeated = false;
            }
            // next is ignorable
            if (next == -1) {
                // System.out.printf("case 0, %d %d %s\n", prev, next, sb.toString());
                continue; // does not append anything
            }
            // prev and next are of same type
            if (prev == next) {
                sb.append(str[i]);
                // System.out.printf("case 1, %d %d %s\n", prev, next, sb.toString());
                continue;
            }
            // next is not an alphabet
            if (next == 2) {
                sb.append(str[i]);
                // System.out.printf("case 2, %d %d %s\n", prev, next, sb.toString());
                continue;
            }
            // next is an alphabet, prev was not +
            // next is uppercase and prev was lowercase
            if (prev == -1 || prev == 2 || prev == 0) {
                if (sb.length() != 0) {
                    sb.append(' ');
                }
                sb.append(Character.toUpperCase(str[i]));
                // System.out.printf("case 3, %d %d %s\n", prev, next, sb.toString());
                continue;
            }
            // next is lowercase and prev was uppercase
            if (prev == 1) {
                if (capRepeated) {
                    sb.insert(sb.length() - 1, ' ');
                    capRepeated = false;
                }
                sb.append(str[i]);
                // System.out.printf("case 4, %d %d %s\n", prev, next, sb.toString());
            }
        }
        String output = sb.toString().trim();
        output = (output.length() == 0) ? text : output;
        //return output;

        // Capitalize all words (Optional)
        String[] result = output.split(" ");
        for (int i = 0; i < result.length; ++i) {
            result[i] = result[i].charAt(0) + result[i].substring(1).toLowerCase();
        }
        output = String.join(" ", result);
        return output;
    }

    /**
     * Test method for the titleCase() function.
     */
    public static void testTitleCase() {
        System.out.println("--------------- Title Case Tests --------------------");
        String[][] samples = {
            {null, null},
            {"", ""},
            {"a", "A"},
            {"aa", "Aa"},
            {"aaa", "Aaa"},
            {"aC", "A C"},
            {"AC", "Ac"},
            {"aCa", "A Ca"},
            {"ACa", "A Ca"},
            {"aCamel", "A Camel"},
            {"anCamel", "An Camel"},
            {"CamelCase", "Camel Case"},
            {"camelCase", "Camel Case"},
            {"snake_case", "Snake Case"},
            {"toCamelCaseString", "To Camel Case String"},
            {"toCAMELCase", "To Camel Case"},
            {"_under_the_scoreCamelWith_", "Under The Score Camel With"},
            {"ABDTest", "Abd Test"},
            {"title123Case", "Title123 Case"},
            {"expect11", "Expect11"},
            {"all0verMe3", "All0 Ver Me3"},
            {"___", "___"},
            {"__a__", "A"},
            {"_A_b_c____aa", "A B C Aa"},
            {"_get$It132done", "Get It132 Done"},
            {"_122_", "122"},
            {"_no112", "No112"},
            {"Case-13title", "Case13 Title"},
            {"-no-allow-", "No Allow"},
            {"_paren-_-allow--not!", "Paren Allow Not"},
            {"Other.Allow.--False?", "Other Allow False"},
            {"$39$ldl%LK3$lk_389$klnsl-32489  3 42034 ", "39 Ldl Lk3 Lk389 Klnsl32489342034"},
            {"tHis will BE MY EXAMple", "T His Will Be My Exa Mple"},
            {"stripEvery.damn-paren- -_now", "Strip Every Damn Paren Now"},
            {"getMe", "Get Me"},
            {"whatSthePoint", "What Sthe Point"},
            {"n0pe_aLoud", "N0 Pe A Loud"},
            {"canHave SpacesThere", "Can Have Spaces There"},
            {"  why_underScore exists  ", "Why Under Score Exists"},
            {"small-to-be-seen", "Small To Be Seen"},
            {"toCAMELCase", "To Camel Case"},
            {"_under_the_scoreCamelWith_", "Under The Score Camel With"},
            {"last one onTheList", "Last One On The List"}
        };
        int pass = 0;
        for (String[] inp : samples) {
            String out = titleCase(inp[0]);
            //String out = WordUtils.capitalizeFully(inp[0]);
            System.out.printf("TEST '%s'\nWANTS '%s'\nFOUND '%s'\n", inp[0], inp[1], out);
            boolean passed = (out == null ? inp[1] == null : out.equals(inp[1]));
            pass += passed ? 1 : 0;
            System.out.println(passed ? "-- PASS --" : "!! FAIL !!");
            System.out.println();
        }
        System.out.printf("\n%d Passed, %d Failed.\n", pass, samples.length - pass);
    }

    public static void main(String[] args) {
        // run tests
        testTitleCase();
    }
}

Hier sind einige Eingaben:

aCamel
TitleCase
snake_case
fromCamelCASEString
ABCTest
expect11
_paren-_-allow--not!
  why_underScore   exists  
last one onTheList 

Und meine Ergebnisse:

A Camel
Title Case
Snake Case
From Camel Case String
Abc Test
Expect11
Paren Allow Not
Why Under Score Exists
Last One On The List

0

Es scheint, dass keine der Antworten es im eigentlichen Titelfall formatiert: "Wie man seinen Traumjob landet", "Um einen Spottdrossel zu töten" usw. Also habe ich meine eigene Methode entwickelt. Funktioniert am besten für englischsprachige Texte.

private final static Set<Character> TITLE_CASE_DELIMITERS = new HashSet<>();

  static {
    TITLE_CASE_DELIMITERS.add(' ');
    TITLE_CASE_DELIMITERS.add('.');
    TITLE_CASE_DELIMITERS.add(',');
    TITLE_CASE_DELIMITERS.add(';');
    TITLE_CASE_DELIMITERS.add('/');
    TITLE_CASE_DELIMITERS.add('-');
    TITLE_CASE_DELIMITERS.add('(');
    TITLE_CASE_DELIMITERS.add(')');
  }

  private final static Set<String> TITLE_SMALLCASED_WORDS = new HashSet<>();

  static {
    TITLE_SMALLCASED_WORDS.add("a");
    TITLE_SMALLCASED_WORDS.add("an");
    TITLE_SMALLCASED_WORDS.add("the");
    TITLE_SMALLCASED_WORDS.add("for");
    TITLE_SMALLCASED_WORDS.add("in");
    TITLE_SMALLCASED_WORDS.add("on");
    TITLE_SMALLCASED_WORDS.add("of");
    TITLE_SMALLCASED_WORDS.add("and");
    TITLE_SMALLCASED_WORDS.add("but");
    TITLE_SMALLCASED_WORDS.add("or");
    TITLE_SMALLCASED_WORDS.add("nor");
    TITLE_SMALLCASED_WORDS.add("to");
  }

  public static String toCapitalizedWord(String oneWord) {
    if (oneWord.length() < 1) {
      return oneWord.toUpperCase();
    }
    return "" + Character.toTitleCase(oneWord.charAt(0)) + oneWord.substring(1).toLowerCase();
  }

  public static String toTitledWord(String oneWord) {
    if (TITLE_SMALLCASED_WORDS.contains(oneWord.toLowerCase())) {
      return oneWord.toLowerCase();
    }
    return toCapitalizedWord(oneWord);
  }

  public static String toTitleCase(String str) {
    StringBuilder result = new StringBuilder();
    StringBuilder oneWord = new StringBuilder();

    char previousDelimiter = 'x';
    /* on start, always move to upper case */
    for (char c : str.toCharArray()) {
      if (TITLE_CASE_DELIMITERS.contains(c)) {
        if (previousDelimiter == '-' || previousDelimiter == 'x') {
          result.append(toCapitalizedWord(oneWord.toString()));
        } else {
          result.append(toTitledWord(oneWord.toString()));
        }
        oneWord.setLength(0);
        result.append(c);
        previousDelimiter = c;
      } else {
        oneWord.append(c);
      }
    }
    if (previousDelimiter == '-' || previousDelimiter == 'x') {
      result.append(toCapitalizedWord(oneWord.toString()));
    } else {
      result.append(toTitledWord(oneWord.toString()));
    }
    return result.toString();
  }

  public static void main(String[] args) {
    System.out.println(toTitleCase("one year in paris"));
    System.out.println(toTitleCase("How to Land Your Dream Job"));
  }

0

Dies ist die einfachste Lösung

    static void title(String a,String b){
    String ra = Character.toString(Character.toUpperCase(a.charAt(0)));
    String rb = Character.toString(Character.toUpperCase(b.charAt(0)));
    for(int i=1;i<a.length();i++){
        ra+=a.charAt(i);
    }
    for(int i=1;i<b.length();i++){
        rb+=b.charAt(i);
    }
    System.out.println(ra+" "+rb);

-1

Das sollte funktionieren:

String str="i like pancakes";
String arr[]=str.split(" ");
String strNew="";
for(String str1:arr)
{
    Character oldchar=str1.charAt(0);
    Character newchar=Character.toUpperCase(str1.charAt(0));
    strNew=strNew+str1.replace(oldchar,newchar)+" ";    
}
System.out.println(strNew);

1
Dies ist keine gültige Antwort, da das OP nach der eingebauten Funktion gefragt hat . Siehe auch den Kommentar, der die verborgene Komplexität dahinter anspricht, dh i18n.
Marcus

-2

Die einfachste Möglichkeit, eine Zeichenfolge in eine Groß- und Kleinschreibung umzuwandeln, ist die Verwendung des Google-Pakets org.apache.commons.lang.WordUtils

System.out.println(WordUtils.capitalizeFully("tHis will BE MY EXAMple"));

Wird dies ergeben

Dies wird mein Beispiel sein

Ich bin mir nicht sicher, warum es "capitalizeFully" heißt, wo die Funktion tatsächlich kein vollständiges Kapitalergebnis liefert, aber das ist sowieso das Werkzeug, das wir brauchen.


1
Es wird benannt, capitalizeFullyweil es jedes Wort groß schreibt, einschließlich derjenigen, die in einem Titel in Kleinbuchstaben geschrieben werden sollten. grammar.about.com/od/tz/g/Title-Case.htm
aij

2
Apache Commons gehört nicht Google. Es wird von der Apache Software Foundation verwaltet. commons.apache.org
ATutorMe

-3

Tut mir leid, ich bin ein Anfänger, also ist meine Codierungsgewohnheit scheiße!

public class TitleCase {

    String title(String sent)
    {   
        sent =sent.trim();
        sent = sent.toLowerCase();
        String[] str1=new String[sent.length()];
        for(int k=0;k<=str1.length-1;k++){
            str1[k]=sent.charAt(k)+"";
    }

        for(int i=0;i<=sent.length()-1;i++){
            if(i==0){
                String s= sent.charAt(i)+"";
                str1[i]=s.toUpperCase();
                }
            if(str1[i].equals(" ")){
                String s= sent.charAt(i+1)+"";
                str1[i+1]=s.toUpperCase();
                }

            System.out.print(str1[i]);
            }

        return "";
        }

    public static void main(String[] args) {
        TitleCase a = new TitleCase();
        System.out.println(a.title("   enter your Statement!"));
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.