Úvod do textu Apache Commons

1. Prehľad

Jednoducho povedané, knižnica Apache Commons Text obsahuje množstvo užitočných užitočných metód pre prácu s Struny, nad rámec toho, čo ponúka jadro Java.

V tomto rýchlom úvode sa dozvieme, čo je Apache Commons Text a na čo sa používa, ako aj niekoľko praktických príkladov použitia knižnice.

2. Závislosť od Maven

Začnime pridaním nasledujúcej závislosti Maven do našej pom.xml:

 org.apache.commons commons-text 1.1 

Najnovšiu verziu knižnice nájdete v centrálnom úložisku Maven.

3. Prehľad

Koreňový balík org.apache.commons.text je rozdelený do rôznych čiastkových balíkov:

  • org.apache.commons.text.diff - rozdiely medzi Struny
  • org.apache.commons.text.similarity - podobnosti a vzdialenosti medzi Struny
  • org.apache.commons.text.translate Preklad textu

Pozrime sa, na čo všetko ktorý balíček možno použiť - podrobnejšie.

3. Zaobchádzanie s textom

The org.apache.commons.text balík obsahuje viac nástrojov pre prácu s Struny.

Napríklad WordUtils má API schopné písať veľké písmená prvého písmena každého slova v a Reťazec, výmena prípadu a Reťazec, a kontrola, či a String obsahuje všetky slová v danom poli.

Pozrime sa, ako môžeme písať veľké písmená prvého slova každého slova v a Reťazec:

@Test public void whenCapitalized_thenCorrect () {String toBeCapitalized = "to be capitalized!"; Výsledok reťazca = WordUtils.capitalize (toBeCapitalized); assertEquals ("Ak chcete byť veľké!", výsledok); }

Takto môžeme skontrolovať, či reťazec obsahuje všetky slová v poli:

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

StrSubstitutor poskytuje pohodlný spôsob stavby Struny zo šablón:

@Test public void whenSubstited_thenCorrect () {Map substitutes = new HashMap (); substitutes.put ("meno", "John"); substitutes.put ("college", "University of Stanford"); String templateString = "Volám sa $ {name} a som študent na $ {college}."; StrSubstitutor sub = nový StrSubstitutor (náhrady); Výsledok reťazca = sub.replace (templateString); assertEquals („Volám sa John a som študentom na univerzite v Stanforde.“, výsledok); }

StrBuilder je alternatívou k Java.lang.StringBuilder. Poskytuje niekoľko nových funkcií, ktoré server neposkytuje StringBuilder.

Napríklad môžeme nahradiť všetky výskyty a String v inom String alebo vyčistiť a String bez priradenia nového objektu k jeho referencii.

Tu je rýchly príklad nahradenia časti a Reťazec:

@ Test public void whenReplaced_thenCorrect () {StrBuilder strBuilder = nový StrBuilder ("príklad StrBuilder!"); strBuilder.replaceAll ("príklad", "nový"); assertEquals (nový StrBuilder ("nový StrBuilder!"), strBuilder); }

Vymazať a Reťazec, môžeme to jednoducho urobiť zavolaním na jasný() metóda na staviteľovi:

strBuilder.clear ();

4. Výpočet rozdielu medzi Struny

Balík org.apache.commons.text.diff implementuje Myersov algoritmus na výpočet rozdielov medzi dvoma Struny.

Rozdiel medzi dvoma Struny je definované postupnosťou modifikácií, ktoré môžu jednu previesť String do iného.

Existujú tri typy príkazov, ktoré možno použiť na prevod súboru String do iného - InsertCommand, KeepCommanda DeleteCommand.

An EditScript objekt obsahuje skript, ktorý by sa mal spustiť za účelom prevodu a String do iného. Vypočítajme počet modifikácií jedného znaku, ktoré by sa mali vykonať, aby sme mohli previesť a String do iného:

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

5. Podobnosti a vzdialenosti medzi Struny

The org.apache.commons.text.similarity balíček obsahuje algoritmy užitočné na hľadanie podobností a vzdialeností medzi nimi Struny.

Napríklad, Najdlhšia spoločná následnosť možno použiť na vyhľadanie počtu bežných znakov v dvoch Struny:

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

Podobne LongestCommonSubsequenceDistance možno použiť na vyhľadanie počtu rôznych znakov v dvoch Struny:

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

6. Preklad textu

The org.apache.text.translate balík bol pôvodne vytvorený, aby nám umožnil prispôsobiť pravidlá poskytované serverom StringEscapeUtils.

Balík obsahuje sadu tried, ktoré sú zodpovedné za preklad textu do niektorých rôznych modelov kódovania znakov, ako sú Unicode a Numeric Character Reference. Môžeme tiež vytvoriť vlastné prispôsobené rutiny pre preklad.

Pozrime sa, ako môžeme previesť a String na ekvivalentný text Unicode:

@ Test public void whenTranslate_thenCorrect () {UnicodeEscaper ue = UnicodeEscaper.above (0); Výsledok reťazca = ue.translate ("ABCD"); assertEquals ("\ u0041 \ u0042 \ u0043 \ u0044", výsledok); }

Tu odovzdávame index znaku, z ktorého chceme začať preklad, do vyššie () metóda.

LookupTranslator umožňuje nám definovať našu vlastnú vyhľadávaciu tabuľku, kde každý znak môže mať zodpovedajúcu hodnotu, a môžeme preložiť akýkoľvek text na jeho zodpovedajúci ekvivalent.

7. Záver

V tomto rýchlom návode sme videli prehľad toho, o čom je Apache Commons Text, a niektoré z jeho bežných funkcií.

Ukážky kódu nájdete na GitHub.