Introduktion til Apache Commons-tekst

1. Oversigt

Simpelthen indeholder Apache Commons Text-biblioteket en række nyttige værktøjsmetoder til at arbejde med Strenge, ud over hvad kernen Java tilbyder.

I denne hurtige introduktion ser vi, hvad Apache Commons Text er, og hvad den bruges til, samt nogle praktiske eksempler på brug af biblioteket.

2. Maven-afhængighed

Lad os starte med at tilføje følgende Maven-afhængighed til vores pom.xml:

 org.apache.commons commons-text 1.1 

Du kan finde den nyeste version af biblioteket i Maven Central Repository.

3. Oversigt

Roden pakke org.apache.commons.text er opdelt i forskellige underpakker:

  • org.apache.commons.text.diff - adskiller sig mellem Strenge
  • org.apache.commons.text.similarity - ligheder og afstande mellem Strenge
  • org.apache.commons.text.translate - oversættelse af tekst

Lad os se, hvad hver pakke kan bruges til - mere detaljeret.

3. Håndtering af tekst

Det org.apache.commons.text pakken indeholder flere værktøjer til at arbejde med Strenge.

For eksempel, WordUtils har API'er, der er i stand til at bruge det første bogstav i hvert ord i et Snor, bytte sagen om en Snor, og kontrollere, om en Snor indeholder alle ord i et givet array.

Lad os se, hvordan vi kan kapitalisere det første bogstav i hvert ord i en Snor:

@Test offentligt ugyldigt nårCapitalized_thenCorrect () {String toBeCapitalized = "skal kapitaliseres!"; Strengresultat = WordUtils.capitalize (toBeCapitalized); assertEquals ("At blive kapitaliseret!", resultat); }

Sådan kan vi kontrollere, om en streng indeholder alle ord i en matrix:

@Test offentligt ugyldigt nårContainsWords_thenCorrect () {boolean containsWords = WordUtils .containsAllWords ("String to search", "to", "search"); assertTrue (indeholder ord); }

StrSubstitutor giver en praktisk måde at bygge på Strenge fra skabeloner:

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

StrBuilder er et alternativ til Java.lang.StringBuilder. Det giver nogle nye funktioner, som ikke leveres af StringBuilder.

For eksempel kan vi erstatte alle forekomster af a Snor i en anden Snor eller ryd en Snor uden at tildele et nyt objekt til dets reference.

Her er et hurtigt eksempel på at udskifte en del af en Snor:

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

For at rydde en Snor, vi kan simpelthen gøre det ved at ringe til klar() metode på bygherren:

strBuilder.clear ();

4. Beregning af forskellen mellem Strenge

Pakken org.apache.commons.text.diff implementerer Myers algoritme til beregning af forskelle mellem to Strenge.

Forskellen mellem to Strenge er defineret af en række ændringer, der kan konvertere en Snor til en anden.

Der er tre typer kommandoer, der kan bruges til at konvertere en Snor til en anden - Indsæt kommando, KeepCommandog Slet kommando.

En EditScript objekt indeholder det script, der skal køres for at konvertere en Snor til en anden. Lad os beregne antallet af single-char-ændringer, der skal foretages for at konvertere en Snor til en anden:

@Test offentligt ugyldigt nårEditScript_thenCorrect () {StringsComparator cmp = ny StringsComparator ("ABCFGH", "BCDEFG"); EditScript-script = cmp.getScript (); int mod = script.getModifications (); assertEquals (4, mod); }

5. Ligheder og afstande mellem Strenge

Det org.apache.commons.text.similarity pakken indeholder algoritmer, der er nyttige til at finde ligheder og afstande imellem Strenge.

For eksempel, Længste Almindelig Efterfølgende kan bruges til at finde antallet af almindelige tegn i to Strenge:

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

Tilsvarende Længste Almindelig Efterfølgende Afstand kan bruges til at finde antallet af forskellige tegn i to Strenge:

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

6. Tekstoversættelse

Det org.apache.text.translate pakken blev oprindeligt oprettet for at give os mulighed for at tilpasse reglerne leveret af StringEscapeUtils.

Pakken har et sæt klasser, der er ansvarlige for at oversætte tekst til nogle af de forskellige tegnkodningsmodeller, såsom Unicode og Numeric Character Reference. Vi kan også oprette vores egne tilpassede rutiner til oversættelse.

Lad os se, hvordan vi kan konvertere en Snor til dets ækvivalente Unicode-tekst:

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

Her sender vi indekset over det tegn, som vi vil starte oversættelsen fra til over() metode.

LookupTranslator giver os mulighed for at definere vores egen opslagstabel, hvor hvert tegn kan have en tilsvarende værdi, og vi kan oversætte enhver tekst til den tilsvarende ækvivalent.

7. Konklusion

I denne hurtige vejledning har vi set en oversigt over, hvad Apache Commons Text handler om, og nogle af dens fælles funktioner.

Kodeprøverne kan findes på GitHub.


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