Чи існує метод перетворення рядків у титульний випадок?


99

Чи є вбудовані методи для перетворення рядка у формат заголовка?


3
Усі, хто читає це запитання: майте на увазі, що багато хто з голосуючих відповідей тут НЕ ПРАЦЮЄТЬСЯ ПРАВО на всіх мовах. Вам потрібна бібліотека, що обізнана з i18n, для правильного вибору титрів, як-от ICU4J (див. Відповідь Даниїла F).
sffc

Відповіді:


106

Apache Commons StringUtils.capitalize () або Commons Text WordUtils.capitalize ()

наприклад: WordUtils.capitalize("i am FINE") = "I Am FINE"від WordUtils doc


14
WordUtils.capitalizeFully () для мене було краще, як це дає: WordUtils.capitalizeFully ("я прекрасний") = "Я добре"
theINtoy

2
Лише невелике оновлення WordUtils перейшло до Commons Text і застаріло всередині Commons Lang
msrd0

Весна також маєStringUtils.capitalise()
OrangeDog

@OrangeDog ти маєш на увазі capitalize()?
TylerH

@TylerH так, автокорекція потрапила до нього
OrangeDog

60

У класі String Java немає методів з великої літери () або titleCase (). У вас є два варіанти:

 StringUtils.capitalize(null)  = null
 StringUtils.capitalize("")    = ""
 StringUtils.capitalize("cat") = "Cat"
 StringUtils.capitalize("cAt") = "CAt"
 StringUtils.capitalize("'cat'") = "'cat'"
  • написати (ще один) статичний хелперний метод toTitleCase ()

Зразок реалізації

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

Тестова шафа

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

Виходи:

Рядок
Ще одна струна
І все-таки ДРУГА

1
Це приємна маленька рутина, але вона не відповідає більш загальному випадку, коли рядки можуть представляти імена. У цьому випадку капіталізація також повинна мати місце після апострофа та дефісів. Напр. О'Коннор та Дж. Уїлкс-Бут. Звичайно, інші мови можуть мати додаткові правила заголовка.
scottb

... Якщо це буде включати це, то чи не знадобиться йому цілий пошук словника просто для того, щоб розібратися, якщо поточне слово було ім'ям? Це здається трохи для будь-якого одного методу.
MMJZ

Цей код майже чудовий, тому що деякі імена можуть мати прийменники, такі як де, дель, делла, деі, так, як у Марії дель Кармен, Марія да Сілва, Марія делла Салюте та ін. Coderanch.com/t/35096/Programming/…
Молодший Мейхе

Це не розривається з апострофом? Що стосується О'Бріана, наприклад.
sproketboy

1
Примітка: щоб уникнути зміни розміру внутрішньо використовується char[]в StringBuilderя пропоную використовуватиnew StringBuilder(input.length())
Lino

38

Якщо я можу прийняти своє рішення ...

Наступний метод заснований на тому, який розмістив dfa. Він вносить такі основні зміни (які підходять до потрібного мені рішення на той час): він змушує всіх символів вхідного рядка в нижній регістр, якщо йому безпосередньо не передує "діючий роздільник", і в цьому випадку символ примусовий до верхній регістр.

Основним обмеженням моєї програми є те, що вона передбачає припущення, що "випадок заголовка" рівномірно визначений для всіх локальних локацій і представлений тими самими конвенціями, які я використав, і тому він менш корисний, ніж код 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();
}

ТЕСТОВІ ЦІННОСТІ

рядок

maRTin o'maLLEY

Джон Вілкс-буд

І все-таки ДРУГА

ВИХІД

Струна

Мартін О'Маллі

Джон Вілкс-Бут

Ще одна струна


не працюватиме з лігатурами типу lj, верхній регістр якого LJ, але заголовком є ​​Lj. Використовуйте Character.toTitleCaseзамість цього.
mihi

@mihi: також не працюватиме з іншими спеціалізованими правилами, наприклад. прізвища, такі як Макнамара або Макдональд.
scottb

але ці випадки по суті не можуть бути виправлені. Використовуючи правильну функцію перетворення регістру (випадок заголовка повинен використовуватись з великої літери, а не великі регістри, згідно з правилами Unicode) можна зробити (і це просто).
mihi

Чи не (невже) це також не призвело до того, що "її" стануть "її"?
allicarn

Це правда. Це добре працює на полях імен, але, як ви зазначаєте, не на загальній прозі. Це не спрацювало б навіть з усіма іменами, зокрема вулканами (T'Pau замість T'pau).
scottb

21

Використовуйте WordUtils.capitalizeFully () від Apache Commons.

WordUtils.capitalizeFully(null)        = null
WordUtils.capitalizeFully("")          = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"

1
Приємне рішення! Дякую! Але це не працює 100% часу, оскільки воно також використовує великі літери, наприклад, "а" у цій назві: "Це заголовок". Дивіться english.stackexchange.com/questions/14/… . Чи знаєте ви будь-яку бібліотеку, яка займається цим?
Eirik W

10

Ви можете використовувати апаш-commons langs так:

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

Ви можете знайти java doc тут: WordUtils.capitalizeПовністю java doc

і якщо ви хочете видалити пробіли між світами, ви можете використовувати:

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

ви можете знайти java doc для String StringUtils.remove java doc

Я сподіваюся, що ця допомога.


5

Якщо ви хочете отримати правильну відповідь відповідно до останнього стандарту Unicode, скористайтеся icu4j.

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

Зауважте, що це чутливий до локального рівня.

Документація Api

Впровадження


Також дивіться новіший ICU4J API CaseMap: icu-project.org/apiref/icu4j/com/ibm/icu/text/…
sffc

Також доступний в Android API рівня 24: developer.android.com/reference/android/icu/lang/…
sffc

3

Ось ще один прийом, що базується на відповідях @ dfa та @ scottb, які обробляють будь-які символи, які не букви / цифри:

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

}

Даний вклад:

МАРІ ÄNN O'CONNEŽ-ŠUSLIK

вихід є

Мері Änn O'Connež-Šuslik


2

Це те, що я написав для перетворення snake_case в нижчуCamelCase, але її можна було легко налаштувати, виходячи з вимог

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

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

1

Я знаю, що це старше, але не відповідає простої відповіді, мені потрібен був цей метод для мого кодування, тому я додав сюди, простий у використанні.

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

У мене була ця проблема, і я її шукав, тоді я створив свій власний метод, використовуючи деякі ключові слова Java, просто потрібно передати змінну String як параметр і отримати вихід у відповідному заголовку 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 ();
    }
}

Тут я не використовував метод обрізки ніде, оскільки в моєму випадку я отримував належну обрізану рядок.
Парвен Сішодія

0

ви можете дуже добре використовувати

org.apache.commons.lang.WordUtils

або

CaseFormat

від API Google.


1
Було б корисно додати метод та приклад.
jechaviz

CaseFormat має лише формати, які зазвичай використовуються в ідентифікаторах програм (UpperCamel, нижній hypen, UPPER_UNDERSCORE тощо) і підтримує лише текст ASCII. Це не спрацювало б для переходу до Title Case.
М. Джастін

0

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

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

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

Перехід до власного права власності:

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

Результат: "Це якийсь текст"


0

Використання Spring's StringUtils:

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

Якщо ви вже використовуєте Spring, все одно, це дозволяє уникнути створення інших рамків.


0

Використовуйте цей метод для перетворення рядка в регістр заголовка:

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

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

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

Ось кілька входів:

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

І мої результати:

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

Здається, жодна з відповідей не форматує його у фактичному випадку з заголовком: "Як висадити роботу своєї мрії", "Убити насмішника" тощо, тому я створив власний метод. Найкраще працює для текстів англійською мовою.

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

Це найпростіше рішення

    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

Це має працювати:

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
Це неправдива відповідь, оскільки ОП запитував на вбудовану функцію. Дивіться також коментар, який стосується прихованої складності, що стоїть за цим, тобто i18n.
Маркус

-2

Найпростіший спосіб перетворення будь-якого рядка в регістр заголовка - це використання пакета googles org.apache.commons.lang.WordUtils

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

Це призведе до цього

Це буде моїм прикладом

Я не впевнений, чому його названо "capitalizeFully", де насправді функція не дає повного капітального результату, але все одно, це той інструмент, який нам потрібен.


1
Він названий capitalizeFullyтому, що він використовує великі літери у кожному слові, включаючи те, що в заголовку має бути малим. grammar.about.com/od/tz/g/Title-Case.htm
aij

2
Компанія Apache Commons не належить Google. Він підтримується програмним фондом Apache. commons.apache.org
ATutorMe

-3

Вибачте, що я початківець, тому моя звичка до кодування відстій!

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