Uvod u tekst Apache Commons

1. Pregled

Jednostavno rečeno, Apache Commons Text knjižnica sadrži brojne korisne korisne metode za rad Žice, izvan onoga što jezgra Java nudi.

U ovom kratkom uvodu vidjet ćemo što je Apache Commons Text i za što se koristi, kao i nekoliko praktičnih primjera korištenja knjižnice.

2. Ovisnost Mavena

Počnimo dodavanjem sljedeće ovisnosti o Mavenu u našu pom.xml:

 org.apache.commons zajednički tekst 1.1 

Najnoviju verziju knjižnice možete pronaći u središnjem spremištu Maven.

3. Pregled

Korijenski paket org.apache.commons.text podijeljen je u različite podpakete:

  • org.apache.commons.text.diff - razlikuje se Žice
  • org.apache.commons.text.sličnost - sličnosti i udaljenosti između Žice
  • org.apache.commons.text.translate - prevođenje teksta

Pogledajmo za što se može koristiti svaki paket - detaljnije.

3. Rukovanje tekstom

The org.apache.commons.text paket sadrži više alata za rad s Žice.

Na primjer, WordUtils ima API-je koji mogu pisati velikim slovom prvo slovo svake riječi u Niz, zamijenivši slučaj a Niz, i provjeravanje je li Niz sadrži sve riječi u danom nizu.

Pogledajmo kako možemo velikim početnim slovom svake riječi u a Niz:

@Test public void whenCapitalized_thenCorrect () {String toBeCapitalized = "za pisanje velikih slova!"; Rezultat niza = WordUtils.capitalize (toBeCapitalized); assertEquals ("Da budu napisana velikim slovom!", rezultat); }

Evo kako možemo provjeriti sadrži li niz sve riječi u nizu:

@Test public void whenContainsWords_thenCorrect () {boolean containsWords = WordUtils .containsAllWords ("String to search", "to", "search"); assertTrue (sadrži Riječi); }

StrSubstitutor pruža prikladan način gradnje Žice iz predložaka:

@Test public void whenSubstituted_thenCorrect () {Zamjene karte = nova HashMap (); substitutes.put ("ime", "Ivan"); substitutes.put ("koledž", "Sveučilište Stanford"); String templateString = "Zovem se $ {name} i student sam na $ {fakultetu}."; StrSubstitutor sub = novi StrSubstitutor (zamjene); Rezultat niza = sub.replace (templateString); assertEquals ("Zovem se John i student sam na Sveučilištu Stanford.", rezultat); }

StrBuilder je alternativa Java.lang.StringBuilder. Pruža neke nove značajke koje ne pruža StringBuilder.

Na primjer, možemo zamijeniti sve pojave a Niz u drugom Niz ili jasno a Niz bez dodjeljivanja novog objekta njegovoj referenci.

Evo kratkog primjera za zamjenu dijela a Niz:

@Test public void whenReplaced_thenCorrect () {StrBuilder strBuilder = novi StrBuilder ("primjer StrBuilder!"); strBuilder.replaceAll ("primjer", "novo"); assertEquals (novi StrBuilder ("novi StrBuilder!"), strBuilder); }

Da biste očistili a Niz, to možemo jednostavno nazvati čisto() metoda na graditelju:

strBuilder.clear ();

4. Izračunavanje razlike između Žice

Paket org.apache.commons.text.diff implementira Myersov algoritam za izračunavanje razlika između dva Žice.

Razlika između dva Žice definiran je slijedom modifikacija koje mogu pretvoriti jednu Niz drugom.

Postoje tri vrste naredbi koje se mogu koristiti za pretvaranje a Niz drugom - InsertCommand, KeepCommand, i DeleteCommand.

An EditScript objekt sadrži skriptu koju treba pokrenuti da bi se pretvorio Niz drugom. Izračunajmo broj izmjena s jednim znakom koje bi trebalo izvršiti kako bismo pretvorili a Niz drugom:

@Test public void whenEditScript_thenCorrect () {StringsComparator cmp = new StringsComparator ("ABCFGH", "BCDEFG"); EditScript skripta = cmp.getScript (); int mod = script.getModifications (); assertEquals (4, mod); }

5. Sličnosti i udaljenosti između Žice

The org.apache.commons.text.sličnost paket sadrži algoritme korisne za pronalaženje sličnosti i udaljenosti između Žice.

Na primjer, LongestCommonSubsequence može se koristiti za pronalaženje broja uobičajenih znakova u dva Žice:

@Test public void whenCompare_thenCorrect () {LongestCommonSubsequence lcs = novo LongestCommonSubsequence (); int countLcs = lcs.apply ("New York", "New Hampshire"); assertEquals (5, countLcs); }

Slično tome, LongestCommonSubsequenceDistance može se koristiti za pronalaženje broja različitih znakova u dva Žice:

@Test javna void whenCalculateDistance_thenCorrect () {LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance (); int countLcsd = lcsd.apply ("New York", "New Hampshire"); assertEquals (11, countLcsd); }

6. Prijevod teksta

The org.apache.text.translate paket je u početku stvoren kako bi nam omogućio prilagodbu pravila koja pruža StringEscapeUtils.

Paket ima skup klasa koje su odgovorne za prevođenje teksta na neke od različitih modela kodiranja znakova, poput Unicode-a i Numeričkih znakova. Također možemo stvoriti vlastite prilagođene rutine za prijevod.

Pogledajmo kako možemo pretvoriti a Niz ekvivalentnom Unicode tekstu:

@Test public void whenTranslate_thenCorrect () {UnicodeEscaper ue = UnicodeEscaper.above (0); Rezultat niza = ue.translate ("ABCD"); assertEquals ("\ u0041 \ u0042 \ u0043 \ u0044", rezultat); }

Ovdje prosljeđujemo indeks znaka iz kojeg želimo započeti prijevod u iznad() metoda.

LookupTranslator omogućuje nam definiranje vlastite tablice pretraživanja u kojoj svaki znak može imati odgovarajuću vrijednost i možemo prevesti bilo koji tekst u odgovarajući ekvivalent.

7. Zaključak

U ovom smo brzom uputstvu vidjeli pregled onoga što Apache Commons Text uopće predstavlja i neke od njegovih zajedničkih značajki.

Uzorci koda mogu se naći na GitHubu.


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