Introduksjon til Apache Commons Text

1. Oversikt

Enkelt sagt inneholder Apache Commons tekstbibliotek en rekke nyttige verktøymetoder for å jobbe med Strenger, utover hva kjernen Java tilbyr.

I denne raske introduksjonen ser vi hva Apache Commons Text er, og hva den brukes til, samt noen praktiske eksempler på bruk av biblioteket.

2. Maven avhengighet

La oss starte med å legge til følgende Maven-avhengighet til vår pom.xml:

 org.apache.commons commons-text 1.1 

Du finner den nyeste versjonen av biblioteket på Maven Central Repository.

3. Oversikt

Rotpakken org.apache.commons.text er delt inn i forskjellige delpakker:

  • org.apache.commons.text.diff - skiller seg mellom Strenger
  • org.apache.commons.text.similarity - likheter og avstander mellom Strenger
  • org.apache.commons.text.translate - å oversette tekst

La oss se hva hver pakke kan brukes til - mer detaljert.

3. Håndtering av tekst

De org.apache.commons.text pakken inneholder flere verktøy for å jobbe med Strenger.

For eksempel, WordUtils har API-er som kan bruke den første bokstaven i hvert ord i en Streng, bytte saken om en Streng, og sjekke om en String inneholder alle ordene i en gitt matrise.

La oss se hvordan vi kan bruke den første bokstaven i hvert ord i en Streng:

@Test offentlig ugyldig nårCapitalized_thenCorrect () {String toBeCapitalized = "kapitaliseres!"; Strengresultat = WordUtils.capitalize (toBeCapitalized); assertEquals ("Å bli kapitalisert!", resultat); }

Slik kan vi sjekke om en streng inneholder alle ordene i en matrise:

@Test offentlig ugyldig nårContainsWords_thenCorrect () {boolean inneholderWords = WordUtils .containsAllWords ("String to search", "to", "search"); assertTrue (inneholder ord); }

StrSubstitutor gir en praktisk måte å bygge på Strenger fra maler:

@Test offentlig ugyldig nårSubstituted_thenCorrect () {Map substitutes = new HashMap (); substitutes.put ("navn", "John"); substitutes.put ("college", "University of Stanford"); String templateString = "Mitt navn er $ {name} og jeg er student ved $ {college}."; StrSubstitutor sub = new StrSubstitutor (substitutes); String result = sub.replace (templateString); assertEquals ("Mitt navn er John og jeg er student ved University of Stanford.", resultat); }

StrBuilder er et alternativ til Java.lang.StringBuilder. Det gir noen nye funksjoner som ikke er levert av StringBuilder.

For eksempel kan vi erstatte alle forekomster av a String i en annen String eller fjern a String uten å tildele et nytt objekt til referansen.

Her er et raskt eksempel for å erstatte en del av en Streng:

@Test offentlig ugyldig nårReplaced_thenCorrect () {StrBuilder strBuilder = ny StrBuilder ("eksempel StrBuilder!"); strBuilder.replaceAll ("eksempel", "ny"); assertEquals (nye StrBuilder ("nye StrBuilder!"), strBuilder); }

Å fjerne en Streng, vi kan ganske enkelt gjøre det ved å ringe klar() metode på byggherren:

strBuilder.clear ();

4. Beregning av forskjellen mellom Strenger

Pakken org.apache.commons.text.diff implementerer Myers algoritme for beregning av forskjeller mellom to Strenger.

Forskjellen mellom to Strenger er definert av en rekke modifikasjoner som kan konvertere en String til en annen.

Det er tre typer kommandoer som kan brukes til å konvertere en String til en annen - Sett inn kommando, KeepCommand, og DeleteCommand.

An EditScript objektet inneholder skriptet som skal kjøres for å konvertere et String til en annen. La oss beregne antall modifiseringer som skal gjøres for å konvertere en String til en annen:

@Test offentlig ugyldig nårEditScript_thenCorrect () {StringsComparator cmp = new StringsComparator ("ABCFGH", "BCDEFG"); EditScript-skript = cmp.getScript (); int mod = script.getModifications (); assertEquals (4, mod); }

5. Likheter og avstander mellom Strenger

De org.apache.commons.text.similarity pakken inneholder algoritmer som er nyttige for å finne likheter og avstander mellom Strenger.

For eksempel, Lengste Vanlige Etterfølgelse kan brukes til å finne antall vanlige tegn i to Strenger:

@Test offentlig ugyldig nårCompare_thenCorrect () {LongestCommonSubsequence lcs = new LongestCommonSubsequence (); int countLcs = lcs.apply ("New York", "New Hampshire"); assertEquals (5, countLcs); }

På samme måte, LengsteFellesSekvensavstand kan brukes til å finne antall forskjellige tegn i to Strenger:

@Test offentlig ugyldig nårCalculateDistance_thenCorrect () {LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance (); int countLcsd = lcsd.apply ("New York", "New Hampshire"); assertEquals (11, countLcsd); }

6. Tekstoversettelse

De org.apache.text.translate pakken ble opprinnelig opprettet for å tillate oss å tilpasse reglene som tilbys av StringEscapeUtils.

Pakken har et sett med klasser som er ansvarlige for å oversette tekst til noen av de forskjellige tegnkodemodellene som Unicode og Numeric Character Reference. Vi kan også lage våre egne tilpassede rutiner for oversettelse.

La oss se hvordan vi kan konvertere en String til den tilsvarende Unicode-teksten:

@Test offentlig ugyldig nårTranslate_thenCorrect () {UnicodeEscaper ue = UnicodeEscaper.above (0); Strengresultat = ue.translate ("ABCD"); assertEquals ("\ u0041 \ u0042 \ u0043 \ u0044", resultat); }

Her sender vi indeksen til tegnet som vi vil starte oversettelsen fra til ovenfor() metode.

LookupTranslator gjør det mulig for oss å definere vår egen oppslagstabell der hvert tegn kan ha en tilsvarende verdi, og vi kan oversette hvilken som helst tekst til den tilsvarende ekvivalenten.

7. Konklusjon

I denne raske opplæringen har vi sett en oversikt over hva Apache Commons Text handler om og noen av dens vanlige funksjoner.

Kodeeksemplene finner du på GitHub.


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