Bevezetés az Apache Commons szövegbe

1. Áttekintés

Egyszerűen fogalmazva: az Apache Commons Text könyvtár számos hasznos segédprogramot tartalmaz a munkához Húrok, azon túl, amit a Java alapvető kínál.

Ebben a rövid bevezetőben meglátjuk, mi az Apache Commons Text, és mire használják, valamint néhány gyakorlati példát a könyvtár használatára.

2. Maven-függőség

Kezdjük azzal, hogy hozzáadjuk a következő Maven-függőséget pom.xml:

 org.apache.commons commons-text 1.1 

A könyvtár legújabb verzióját a Maven központi adattárában találja meg.

3. Áttekintés

A root csomag org.apache.commons.text különböző alcsomagokra oszlik:

  • org.apache.commons.text.diff - eltérések között Húrok
  • org.apache.commons.text.hasonlóság - hasonlóságok és távolságok között Húrok
  • org.apache.commons.text.translate - szöveg fordítása

Nézzük meg, hogy az egyes csomagok mire használhatók - részletesebben.

3. Szöveg kezelése

A org.apache.commons.text A csomag több eszközt tartalmaz a használatához Húrok.

Például, WordUtils rendelkezik olyan API-kkal, amelyek képesek a nagybetűket írni az egyes szavakban Húr, esetének felcserélése a Húr, és ellenőrzi, hogy a Húr egy adott tömb összes szavát tartalmazza.

Lássuk, hogyan tudjuk nagybetűvel írni az egyes szavak első betűjét Húr:

@Test public void whenCapitalized_thenCorrect () {String toBeCapitalized = "nagybetűvel írandó!"; Karakterlánc eredménye = WordUtils.capitalize (toBeCapitalized); assertEquals ("Nagybetűvel kell írni!", eredmény); }

Így ellenőrizhetjük, hogy egy karakterlánc tartalmazza-e a tömb összes szavát:

@Test public void whenContainsWords_thenCorrect () {a logikai érték tartalmazzaWords = WordUtils .containsAllWords ("String to search", "to", "search"); assertTrue (tartalmazzaWords); }

StrSubstitutor kényelmes módot kínál az építkezéshez Húrok sablonokból:

@Test public void whenSubstituted_thenCorrect () {Map substitutes = new HashMap (); helyettesítők.put ("név", "John"); helyettesítők.put ("főiskola", "Stanfordi Egyetem"); String templateString = "A nevem $ {name}, és a $ {college} hallgatója vagyok."; StrSubstitutor sub = új StrSubstitutor (helyettesítők); Karakterlánc eredménye = sub.replace (templateString); assertEquals ("A nevem John és hallgató vagyok a Stanfordi Egyetemen.", eredmény); }

StrBuilder alternatívája a Java.lang.StringBuilder. Néhány új funkcióval rendelkezik, amelyeket nem a StringBuilder.

Például kicserélhetjük az a összes előfordulását Húr egy másikban Húr vagy törölje a Húr anélkül, hogy új objektumot rendelne hozzá a referenciához.

Itt egy rövid példa az a részének kicserélésére Húr:

@Test public void whenReplaced_thenCorrect () {StrBuilder strBuilder = new StrBuilder ("példa StrBuilder!"); strBuilder.replaceAll ("példa", "új"); assertEquals (új StrBuilder ("új StrBuilder!"), strBuilder); }

A törléshez a Húr, egyszerűen megtehetjük, ha felhívjuk a egyértelmű() módszer az építőn:

strBuilder.clear ();

4. A különbség kiszámítása Húrok

A csomag org.apache.commons.text.diff megvalósítja Myers algoritmusát a kettő közötti diff Húrok.

A különbség kettő között Húrok olyan módosítássorozat határozza meg, amely képes átalakítani egyet Húr másiknak.

Három típusú parancs használható az a konvertálására Húr másiknak - InsertCommand, KeepCommand, és DeleteCommand.

An EditScript objektum tartalmazza azt a szkriptet, amelyet futtatni kell az a konvertálásához Húr másiknak. Számítsuk ki az egy karakteres módosítások számát, amelyeket el kell végezni az a konvertálásához Húr másiknak:

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

5. Hasonlóságok és távolságok között Húrok

A org.apache.commons.text.hasonlóság A csomag olyan algoritmusokat tartalmaz, amelyek hasznosak a hasonlóságok és távolságok megtalálásához Húrok.

Például, LongestCommonSubsequence segítségével megkereshetjük a közös karakterek számát kettőben Húrok:

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

Hasonlóképpen, LongestCommonSubsequenceDistance segítségével megkereshetjük a különféle karakterek számát kettőben Húrok:

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

6. Szövegfordítás

A org.apache.text.translate A csomagot eredetileg azért hoztuk létre, hogy testre szabhassuk a StringEscapeUtils.

A csomag olyan osztályokból áll, amelyek felelősek a szöveg lefordításáért a különböző karakterkódolási modellekbe, mint például az Unicode és a Numeric Character Reference. Saját fordítási rutinokat is létrehozhatunk.

Lássuk, hogyan alakíthatjuk át a Húr egyenértékű Unicode szövegéhez:

@Test public void whenTranslate_thenCorrect () {UnicodeEscaper ue = UnicodeEscaper.above (0); Karakterlánc eredménye = ue.translate ("ABCD"); assertEquals ("\ u0041 \ u0042 \ u0043 \ u0044", eredmény); }

Itt adjuk át annak a karakternek az indexét, amelyből a fordítást meg akarjuk kezdeni felett() módszer.

LookupTranslator lehetővé teszi számunkra, hogy meghatározzuk saját keresőtáblánkat, ahol minden karakternek megfelelő értéke lehet, és bármely szöveget lefordíthatunk a megfelelő megfelelőjére.

7. Következtetés

Ebben a gyors oktatóanyagban áttekintést láthattunk arról, hogy miről is szól az Apache Commons Text, és néhány közös jellemzőjéről.

A kódminták a GitHub oldalon találhatók.