Pretvori niz u naslovni slučaj

1. Uvod

U ovom kratkom vodiču pokazat ćemo kako pretvoriti Niz do formata naslova na Javi.

Pokazat ćemo različite načine implementacije prilagođene metode, a također ćemo pokazati kako to učiniti pomoću biblioteka trećih strana.

2. Osnovna Java rješenja

2.1. Iteriranje kroz Niz Likovi

Jedan od načina pretvorbe a Niz do naslova je ponavljanjem svih znakova Niz.

Da bismo to učinili, kad pronađemo razdvajač riječi, velikim slovom pišemo sljedeći znak. Nakon toga, ostale znakove mijenjamo u mala slova dok ne dođemo do sljedećeg separatora riječi.

Upotrijebimo razmak kao razdjelnik riječi i provedimo ovo rješenje:

javni statički String convertToTitleCaseIteratingChars (Tekst niza) {if (text == null || text.isEmpty ()) {return text; } StringBuilder pretvoren = novi StringBuilder (); boolean convertNext = true; za (char ch: text.toCharArray ()) {if (Character.isSpaceChar (ch)) {convertNext = true; } else if (convertNext) {ch = Character.toTitleCase (ch); convertNext = false; } else {ch = Character.toLowerCase (ch); } pretvoreno.append (ch); } return convert.toString (); }

Kao što vidimo, koristimo se metodom Character.toTitleCase izvršiti pretvorbu, budući da provjerava naslovni slučaj ekvivalentan a Lik u Unicodeu.

Ako ovu metodu testiramo pomoću ovih ulaza:

TO JE TIHO, TO JE TIHO

Dobivamo sljedeće očekivane izlaze:

Ovo je naslov Ovo je naslov

2.2. Razdvajanje u riječi

Drugi pristup za to je razdvajanje Niz u riječi, pretvorite svaku riječ u velika i mala slova i na kraju ponovo spojite sve riječi koristeći isti separator riječi.

Pogledajmo ga u kodu, koristeći ponovno razmak kao razdjelnik riječi i korisno Stream API:

privatni statički završni niz WORD_SEPARATOR = ""; javni statički niz convertToTitleCaseSplitting (Tekst niza) {if (text == null || text.isEmpty ()) {return 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)); }

Koristeći iste ulaze kao i prije, dobivamo potpuno iste izlaze:

Ovo je naslov Ovo je naslov

3. Korištenje Apache Commons

U slučaju da ne želimo implementirati vlastitu prilagođenu metodu, možemo koristiti biblioteku Apache Commons. Postavljanje ove knjižnice objašnjeno je u ovom članku.

Ovo pruža the WordUtils razred, koji ima pisati velikim slovima u potpunosti () metoda koji čini upravo ono što želimo postići:

javni statički String convertToTileCaseWordUtilsFull (Tekst niza) {return WordUtils.capitalizeFully (tekst); }

Kao što vidimo, ovo je vrlo jednostavno za upotrebu i ako ga testiramo na istim ulazima kao i prije, dobit ćemo iste rezultate:

Ovo je naslov Ovo je naslov

Također, WordUtils razred pruža još pisati velikim slovom () metoda koja djeluje slično kao capitalizeFully (), osim njega samo mijenja prvi znak svake riječi. To znači da ostatak znakova ne pretvara u mala slova.

Pogledajmo kako to možemo koristiti:

javni statički String convertToTileCaseWordUtils (Tekst niza) {return WordUtils.capitalize (text); }

Sada, ako ga testiramo s istim ulazima kao i prije, dobit ćemo ove različite izlaze:

OVO JE TIHO OVO, JE TIHO

4. Korištenje ICU4J

Još jedna knjižnica koju možemo koristiti je ICU4J, koja pruža podršku za Unicode i globalizaciju.

Da bismo je koristili, moramo dodati ovu ovisnost našem projektu:

 com.ibm.icu icu4j 61.1 

Najnoviju verziju možete pronaći ovdje.

Ova knjižnica djeluje na vrlo sličan način kao i WordUtils, ali možemo odrediti a BreakIterator kako bi metodi rekli kako želimo podijeliti Niz, i stoga koje riječi želimo pretvoriti u velika i mala slova:

javni statički String convertToTitleCaseIcu4j (Tekst niza) {if (text == null || text.isEmpty ()) {return text; } return UCharacter.toTitleCase (text, BreakIterator.getTitleInstance ()); }

Kao što vidimo, oni imaju specifičnost BreakIterator za rad sa naslovima. Ako ne navedemo nijednu BreakIterator koristi zadane vrijednosti iz Unicodea, koji u ovom slučaju daju iste rezultate.

Također, primijetite da nam ova metoda omogućuje da odredimo Lokalno od Niz pretvaramo kako bismo izvršili pretvorbu specifičnu za određeni lokalitet.

5. Zaključak

U ovom kratkom članku pokazali smo kako pretvoriti Niz do formata naslova na Javi. Prvo smo koristili naše prilagođene implementacije, a nakon toga pokazali smo kako se to radi pomoću vanjskih knjižnica.

Kao i uvijek, puni izvorni kod primjera dostupan je na GitHub-u.