Apakah ada metode untuk konversi String ke Title Case?

99

Apakah ada metode bawaan yang tersedia untuk mengonversi string menjadi format Kasus Judul?

TylerH
sumber
3
Semua orang yang membaca pertanyaan ini: berhati-hatilah karena banyak dari jawaban pilihan teratas di sini TIDAK BEKERJA DENGAN BENAR untuk semua bahasa. Anda memerlukan pustaka yang sadar i18n untuk penetapan judul yang benar, seperti ICU4J (lihat jawaban Daniel F).
sffc

Jawaban:

106

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

misalnya: WordUtils.capitalize("i am FINE") = "I Am FINE"dari WordUtils doc

aberrant80
sumber
14
WordUtils.capitalizeFully () lebih baik bagi saya karena memberikan: WordUtils.capitalizeFully ("i am FINE") = "I Am Fine"
theINtoy
2
Hanya pembaruan kecil, WordUtils telah beralih ke Commons Text dan tidak digunakan lagi di dalam Commons Lang
msrd0
Spring juga memilikiStringUtils.capitalise()
OrangeDog
@OrangeDog maksud Anda capitalize()?
TylerH
@TylerH ya, koreksi otomatis harus melakukannya
OrangeDog
60

Tidak ada metode capitalize () atau titleCase () di kelas String Java. Anda memiliki dua pilihan:

 StringUtils.capitalize(null)  = null
 StringUtils.capitalize("")    = ""
 StringUtils.capitalize("cat") = "Cat"
 StringUtils.capitalize("cAt") = "CAt"
 StringUtils.capitalize("'cat'") = "'cat'"
  • tulis (lagi) metode pembantu statis toTitleCase ()

Implementasi sampel

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

Kasus cobaan

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

keluaran:

Tali
String lain
BELUM STRING
dfa
sumber
1
Ini adalah rutinitas kecil yang bagus, tetapi gagal untuk kasus yang lebih umum di mana String dapat mewakili nama. Dalam kasus ini, penggunaan huruf besar juga perlu terjadi setelah apostrof dan tanda hubung. Misalnya. O'Connor dan J. Wilkes-Booth. Tentu saja, bahasa lain mungkin memiliki aturan kapitalisasi judul tambahan.
scottb
... Jika itu akan memasukkan itu, bukankah itu membutuhkan seluruh pencarian kamus hanya untuk mengetahui jika kata saat ini adalah sebuah nama? Tampaknya agak berlebihan untuk salah satu metode.
MMJZ
Kode ini hampir tidak masalah karena beberapa nama dapat memiliki prepositon seperti de, del, della, dei, da seperti di Maria del Carmen, Maria da Silva, Maria della Salute, dll. Coderanch.com/t/35096/Programming/…
Junior Mayhé
Bukankah ini putus dengan apostrof? Bagaimana dengan O'Brian misalnya.
sproketboy
1
Catatan: untuk menghindari mengubah ukuran yang digunakan secara internal char[]di StringBuildersaya sarankan menggunakannew StringBuilder(input.length())
Lino
38

Jika saya dapat mengajukan pendapat saya tentang solusinya ...

Metode berikut didasarkan pada salah satu yang diposting DFA. Itu membuat perubahan besar berikut (yang sesuai dengan solusi yang saya butuhkan pada saat itu): itu memaksa semua karakter dalam string input ke dalam huruf kecil kecuali itu segera didahului oleh "pembatas yang dapat ditindaklanjuti" dalam hal ini karakter dipaksa menjadi huruf besar.

Batasan utama dari rutinitas saya adalah membuat asumsi bahwa "kapitalisasi judul" didefinisikan secara seragam untuk semua lokal dan diwakili oleh konvensi kasus yang sama yang telah saya gunakan sehingga kurang berguna daripada kode dfa dalam hal itu.

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

NILAI UJI

Sebuah benang

maRTin o'maLLEY

john wilkes-booth

BELUM STRING

OUTPUT

Sebuah benang

Martin O'Malley

John Wilkes-Booth

Namun String Lain

scottb
sumber
tidak akan bekerja dengan ligatur seperti lj, yang huruf besarnya LJ tapi titlecase Lj. Gunakan Character.toTitleCasesebagai gantinya.
mihi
@mihi: juga tidak akan berfungsi dengan aturan khusus lainnya, mis. nama keluarga seperti McNamara atau MacDonald.
scottb
tetapi kasus ini secara inheren tidak dapat diperbaiki. Menggunakan fungsi konversi case yang benar (titlecase seharusnya digunakan untuk huruf kapital, dan bukan huruf besar, menurut aturan Unicode) dapat dilakukan (dan itu mudah).
mihi
Bukankah (Wouldn'T) ini juga akan menyebabkan "miliknya" menjadi "miliknya"?
allicarn
Itu benar. Ini bekerja dengan baik pada bidang nama tetapi, seperti yang Anda tunjukkan, tidak pada prosa umum. Ini bahkan tidak akan bekerja dengan baik pada semua nama, khususnya Vulcan (T'Pau bukannya T'pau).
scottb
21

Gunakan WordUtils.capitalizeFully () dari Apache Commons.

WordUtils.capitalizeFully(null)        = null
WordUtils.capitalizeFully("")          = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"
jiehanzheng
sumber
1
Solusi bagus! Terima kasih! Tetapi ini tidak berhasil 100% dari waktu, karena ini juga menggunakan huruf besar misalnya "a" dalam judul ini: "Ini adalah Judul". Lihat english.stackexchange.com/questions/14/… . Apakah Anda mengetahui perpustakaan yang membahas hal ini?
Eirik W
10

Anda dapat menggunakan apache commons langs seperti ini:

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

Anda dapat menemukan dokumen java di sini: WordUtils.capitalizeFully java doc

dan jika Anda ingin menghapus spasi di antara dunia, Anda dapat menggunakan:

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

Anda dapat menemukan dokumen java untuk String StringUtils.remove java doc

saya berharap bantuan ini.

Vegegoku
sumber
5

Jika Anda ingin jawaban yang benar sesuai dengan standar Unicode terbaru, Anda harus menggunakan icu4j.

UCharacter.toTitleCase(Locale.US, "hello world", null, 0);

Perhatikan bahwa ini peka terhadap lokal.

Dokumentasi Api

Penerapan

Daniel F
sumber
Lihat juga Peta Kasus API ICU4J yang lebih baru: icu-project.org/apiref/icu4j/com/ibm/icu/text/…
sffc
Juga tersedia di Android API level 24: developer.android.com/reference/android/icu/lang/…
sffc
3

Berikut ini pandangan lain berdasarkan jawaban @ dfa dan @ scottb yang menangani karakter non-huruf / digit:

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

}

Masukan yang diberikan:

MARY ÄNN O'CONNEŽ-ŠUSLIK

hasilnya adalah

Mary Änn O'Connež-Šuslik

mrts
sumber
2

Ini adalah sesuatu yang saya tulis untuk mengonversi snake_case ke lowerCamelCase tetapi dapat dengan mudah disesuaikan berdasarkan persyaratan

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());
}
pengguna1743960
sumber
Jawaban Anda berfungsi seperti jimat, namun, solusinya tampaknya tidak menangani urutan kata tunggal, mungkin kondisi if seharusnya cukup.
yashgarg1232
1

Saya tahu ini lebih tua, tetapi tidak membawa jawaban sederhana, saya membutuhkan metode ini untuk pengkodean saya jadi saya menambahkan di sini, mudah digunakan.

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);
}
Manish Bansal
sumber
1

Saya mengalami masalah ini dan saya mencarinya kemudian saya membuat metode saya sendiri menggunakan beberapa kata kunci java hanya perlu melewatkan variabel String sebagai parameter dan mendapatkan output yang tepat berjudul String.

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 ();
    }
}
Parveen Sishodiya
sumber
Di sini saya tidak menggunakan metode trim di mana pun karena dalam kasus saya, saya mendapatkan string yang dipangkas dengan benar.
Parveen Sishodiya
0

Anda bisa menggunakannya dengan sangat baik

org.apache.commons.lang.WordUtils

atau

CaseFormat

dari Google API.

gkarthiks.dll
sumber
1
Akan berguna untuk menambahkan metode dan contoh.
jechaviz
CaseFormat hanya memiliki format yang biasanya digunakan dalam pengidentifikasi program (UpperCamel, lower-hypen, UPPER_UNDERSCORE, dll.) Dan hanya mendukung teks ASCII. Ini tidak akan bekerja dengan baik untuk mengonversi ke Kasus Judul.
M. Justin
0

Saya baru-baru ini mengalami masalah ini juga dan sayangnya memiliki banyak kemunculan nama yang dimulai dengan Mc dan Mac, saya akhirnya menggunakan versi kode scottb yang saya ubah untuk menangani awalan ini sehingga ada di sini jika ada yang ingin menggunakannya.

Masih ada kasus tepi yang terlewatkan tetapi hal terburuk yang dapat terjadi adalah bahwa surat akan menjadi huruf kecil ketika harus dikapitalisasi.

/**
 * 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;    
}
Nick tua
sumber
0

Konversi ke Kasus Judul yang Sesuai:

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

Hasil: "This Is Some Text"

VAIBHAV SHEERSH
sumber
0

Menggunakan Spring StringUtils:

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

Jika Anda sudah menggunakan Spring, ini menghindari penggunaan framework lain.

David Lavender
sumber
0

Gunakan metode ini untuk mengonversi string menjadi kapitalisasi judul:

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("");
}
Abdulhamid Yusuf
sumber
0

Konverter ini mengubah string apa pun yang berisi kapitalisasi unta, spasi, digit, dan karakter lain menjadi kapitalisasi judul yang dibersihkan.

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

Berikut beberapa masukan:

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

Dan keluaran saya:

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
Dipu
sumber
0

Tampaknya tidak ada jawaban yang memformatnya dalam kasus judul yang sebenarnya: "Bagaimana Mendapatkan Pekerjaan Impian Anda", "Membunuh Burung Mockingbird", dll. Jadi saya telah membuat metode saya sendiri. Berfungsi paling baik untuk teks bahasa Inggris.

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"));
  }
Mladen Adamovic
sumber
0

Ini adalah solusi paling sederhana

    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);
Reppin Frost
sumber
-1

Ini harus bekerja:

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);
Neha
sumber
1
Ini bukan jawaban yang valid karena OP meminta fungsi bawaan . Lihat juga komentar yang membahas kompleksitas tersembunyi di balik ini, yaitu i18n.
Marcus
-2

Cara termudah untuk mengonversi string apa pun menjadi kapitalisasi judul, adalah dengan menggunakan paket googles org.apache.commons.lang.WordUtils

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

Akan menghasilkan ini

Ini Akan Menjadi Teladan Saya

Saya tidak yakin kenapa namanya "capitalizeFully", padahal fungsinya tidak melakukan full capital result, tapi lagian, itu alat yang kita butuhkan.

JoeG
sumber
1
Dinamai capitalizeFullykarena menggunakan huruf besar pada setiap kata, termasuk kata yang harus menggunakan huruf kecil dalam judul. grammar.about.com/od/tz/g/Title-Case.htm
aij
2
Apache Commons tidak dimiliki oleh Google. Ini dikelola oleh Apache Software Foundation. commons.apache.org
ATutorMe
-3

Maaf saya seorang pemula jadi kebiasaan coding saya payah!

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!"));
    }
}
Vishwanath Dasa
sumber