Ako obrátiť reťazec v Jave

1. Prehľad

V tomto rýchlom návode to uvidíme ako môžeme zvrátiť a String v Jave.

Toto spracovanie začneme robiť pomocou obyčajných riešení Java. Ďalej sa pozrieme na možnosti, ktoré poskytujú knižnice tretích strán, ako je Apache Commons.

Ďalej si ukážeme ako obrátiť poradie slov vo vete.

2. Tradičné pre Slučka

Vieme, že reťazce sú v Jave nemenné. Nemenný objekt je objekt, ktorého vnútorný stav zostáva konštantný po úplnom vytvorení.

Preto nemôžeme zvrátiť a String jeho úpravou. Musíme vytvoriť ďalšie String pre tento dôvod.

Najprv si ukážeme základný príklad použitia a pre slučka. Ideme to iterovať String vstup od posledného po prvý prvok a spojiť každý znak do nového String:

public String reverse (String input) {if (input == null) {return input; } Výstup reťazca = ""; pre (int i = input.length () - 1; i> = 0; i--) {output = output + input.charAt (i); } návrat výstup; }

Ako vidíme, musíme byť pri rohových prípadoch opatrní a zaobchádzať s nimi osobitne.

Pre lepšie pochopenie príkladu môžeme zostaviť test jednotky:

@Test public void whenReverseIsCalled_ThenCorrectStringIsReturned () {String reversed = ReverseStringExamples.reverse ("cat"); Reťazec reversedNull = ReverseStringExamples.reverse (null); String reversedEmpty = ReverseStringExamples.reverse (StringUtils.EMPTY); assertEquals ("tac", obrátené); assertEquals (null, reversedNull); assertEquals (StringUtils.EMPTY, reversedEmpty); }

3. A StringBuilder

Java tiež ponúka niektoré mechanizmy ako StringBuilder a StringBuffer ktoré vytvárajú premenlivú postupnosť znakov. Tieto objekty majú a reverz () metóda, ktorá nám pomáha dosiahnuť požadovaný výsledok.

Tu musíme vytvoriť a StringBuilder z String vstup a potom zavolajte na reverz () metóda:

public String reverseUsingStringBuilder (reťazcový vstup) {if (input == null) {return null; } Výstup StringBuilder = nový StringBuilder (input) .reverse (); návrat output.toString (); }

4. Apache Commons

Apache Commons je populárna knižnica Java s množstvom tried nástrojov vrátane manipulácie s reťazcami.

Ako obvykle, aby sme mohli začať používať Apache Commons, najskôr musíme pridať závislosť Maven:

 org.apache.commons commons-lang3 3.9 

The StringUtils trieda je to, čo tu potrebujeme, pretože poskytuje reverz () metóda podobná ako StringBuilder.

Jednou z výhod používania tejto knižnice je to jeho úžitkové metódy nulový- bezpečné operácie. S okrajovými prípadmi teda nemusíme zaobchádzať osobitne.

Vytvorme metódu, ktorá splní náš účel a použije StringUtils trieda:

public String reverseUsingApacheCommons (reťazcový vstup) {return StringUtils.reverse (vstup); }

Teraz, keď sa pozrieme na tieto tri metódy, určite môžeme povedať, že tretia je najjednoduchšie a najmenej náchylné na chyby spôsob cúvania a String.

5. Obrátenie poradia slov vo vete

Teraz predpokladajme, že máme vetu so slovami oddelenými medzerami a bez interpunkčných znamienok. Musíme obrátiť poradie slov v tejto vete.

Tento problém môžeme vyriešiť v dvoch krokoch: rozdelením vety pomocou oddeľovača medzery a následným zreťazením slov v opačnom poradí.

Najskôr si ukážeme klasický prístup. Budeme používať S.tring.split () na splnenie prvej časti nášho problému. Ďalej budeme iterovať späť cez výsledné pole a spojiť slová pomocou a StringBuilder. Medzi tieto slová samozrejme musíme pridať aj medzeru:

public String reverseTheOrderOfWords (Reťazec vety) {if (vety == null) {return null; } Výstup StringBuilder = nový StringBuilder (); Reťazec [] slová = vety.split (""); for (int i = words.length - 1; i> = 0; i--) {output.append (words [i]); output.append (""); } návrat output.toString (). trim (); }

Po druhé, zvážime použitie knižnice Apache Commons. Opäť nám pomáha dosiahnuť čitateľnejší a menej náchylný na chyby. Musíme len zavolať StringUtils.reverseDelimited () metóda so vstupnou vetou a oddeľovačom ako argumentmi:

public String reverseTheOrderOfWordsUsingApacheCommons (reťazcová veta) {návrat StringUtils.reverseDelimited (veta, ''); }

6. Záver

V tomto tutoriáli sme sa najskôr pozreli na rôzne spôsoby obrátenia a String v Jave. Prešli sme si niekoľkými príkladmi použitia základnej Javy, ako aj použitia populárnej knižnice tretích strán, ako je Apache Commons.

Ďalej sme videli, ako v dvoch krokoch obrátiť poradie slov vo vete. Tieto kroky môžu byť užitočné aj pri dosahovaní ďalších obmien vety.

Ako obvykle sú všetky ukážky kódu zobrazené v tomto tutoriáli dostupné na GitHub.