Konvertujte reťazec na nadpis

1. Úvod

V tomto krátkom tutoriáli si ukážeme, ako previesť a String do formátu veľkých písmen v jazyku Java.

Ukážeme si rôzne spôsoby implementácie vlastnej metódy a ukážeme si tiež, ako to urobiť pomocou knižníc tretích strán.

2. Základné riešenia Java

2.1. Iterácia cez String Postavy

Jedným zo spôsobov prevodu String Písanie na veľké a malé písmená je opakovaním všetkých znakov súboru String.

Ak to urobíme, keď nájdeme oddeľovač slov, ďalší znak sa napíše veľkými písmenami. Potom zmeníme ostatné znaky na malé písmená, kým sa nedostaneme k ďalšiemu oddeľovaču slov.

Využime medzeru ako oddeľovač slov a implementujme toto riešenie:

public static String convertToTitleCaseIteratingChars (text reťazca) {if (text == null || text.isEmpty ()) {návratový text; } StringBuilder prevedený = nový StringBuilder (); boolean convertNext = true; pre (char ch: text.toCharArray ()) {if (Character.isSpaceChar (ch)) {convertNext = true; } else if (convertNext) {ch = Character.toTitleCase (ch); convertNext = false; } else {ch = Character.toLowerCase (ch); } prevedené.append (ch); } návrat prevedený.toString (); }

Ako vidíme, používame metódu Character.toTitleCase urobiť premenu, keďže kontroluje ekvivalent veľkosti písmen v a Postava v Unicode.

Ak túto metódu otestujeme pomocou týchto vstupov:

JE TO TITLE, JE TO TITLE

Získame nasledujúce očakávané výstupy:

Toto je titul Toto je titul

2.2. Rozdelenie na slová

Ďalším prístupom k tomu je rozdelenie String na slová, preveďte každé slovo na veľké a malé písmená a nakoniec spojte všetky slová znova pomocou rovnakého oddeľovača slov.

Pozrime sa na to v kóde, pričom opäť použijeme biele miesto ako oddeľovač slov a užitočné Prúd API:

súkromný statický konečný reťazec WORD_SEPARATOR = ""; public static String convertToTitleCaseSplitting (String text) {if (text == null || text.isEmpty ()) {návratový text; } return Arrays .stream (text.split (WORD_SEPARATOR)) .map (word -> word.isEmpty ()? word: Character.toTitleCase (word.charAt (0)) + word .substring (1) .toLowerCase ()) .collect (Collectors.joining (WORD_SEPARATOR)); }

Použitím rovnakých vstupov ako predtým získame úplne rovnaké výstupy:

Toto je titul Toto je titul

3. Používanie Apache Commons

V prípade, že nechceme implementovať vlastnú metódu, môžeme použiť knižnicu Apache Commons. Nastavenie tejto knižnice je vysvetlené v tomto článku.

Toto poskytuje the WordUtils triedy, ktorá má capitalizeFully () metóda čo robí presne to, čo chceme dosiahnuť:

public static String convertToTileCaseWordUtilsFull (text reťazca) {návrat WordUtils.capitalizeFully (text); }

Ako vidíme, je to veľmi jednoduché a ak to otestujeme s rovnakými vstupmi ako predtým, dostaneme rovnaké výsledky:

Toto je titul Toto je titul

Tiež WordUtils trieda poskytuje ďalší veľké písmená () metóda ktorý funguje podobne ako capitalizeFully (), okrem toho iba zmení prvý znak každého slova. To znamená, že nekonvertuje ostatné znaky na malé písmená.

Pozrime sa, ako to môžeme využiť:

public static String convertToTileCaseWordUtils (text reťazca) {návrat WordUtils.capitalize (text); }

Teraz, ak to otestujeme s rovnakými vstupmi ako predtým, získame tieto rôzne výstupy:

TOTO JE TITUL TOTO, JE TITULKO

4. Používanie ICU4J

Ďalšou knižnicou, ktorú môžeme použiť, je ICU4J, ktorá poskytuje podporu Unicode a globalizáciu.

Aby sme to mohli použiť, musíme do nášho projektu pridať túto závislosť:

 com.ibm.icu icu4j 61.1 

Najnovšiu verziu nájdete tu.

Táto knižnica funguje veľmi podobným spôsobom ako WordUtils, ale môžeme určiť a BreakIterator povedať metóde, ako chceme rozdeliť String, a teda aké slová chceme previesť na nadpis:

public static String convertToTitleCaseIcu4j (String text) {if (text == null || text.isEmpty ()) {návratový text; } return UCharacter.toTitleCase (text, BreakIterator.getTitleInstance ()); }

Ako vidíme, majú špecifický BreakIterator pracovať s titulmi. Ak žiadne neurčíme BreakIterator používa predvolené hodnoty z Unicode, ktoré v tomto prípade generujú rovnaké výsledky.

Všimnite si tiež, že táto metóda nám umožňuje určiť Miestne nastavenie z String prevádzame s cieľom vykonať miestnu konverziu.

5. Záver

V tomto krátkom článku sme si ukázali, ako previesť a String do formátu veľkých písmen v jazyku Java. Najprv sme použili naše vlastné implementácie a potom sme si ukázali, ako to urobiť pomocou externých knižníc.

Celý zdrojový kód príkladov je ako vždy k dispozícii na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found