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.