Elaborazione di stringhe con Apache Commons Lang 3

1. Panoramica

La libreria Apache Commons Lang 3 fornisce il supporto per la manipolazione delle classi principali delle API Java. Questo supporto include metodi per la gestione di stringhe, numeri, date, concorrenza, riflessione di oggetti e altro.

Oltre a fornire un'introduzione generale alla libreria, questo tutorial mostra i metodi della classe StringUtils utilizzata per la manipolazione delle istanze String .

2. Dipendenza da Maven

Per utilizzare la libreria Commons Lang 3, è sufficiente estrarla dal repository Maven centrale utilizzando la seguente dipendenza:

 org.apache.commons commons-lang3 3.5 

Puoi trovare l'ultima versione di questa libreria qui.

3. StringUtils

La classe StringUtils fornisce metodi per operazioni null -safe sulle stringhe.

Molti metodi di questa classe hanno quelli corrispondenti definiti nella classe java.lang.String , che non sono null -safe. Tuttavia, questa sezione si concentrerà invece su diversi metodi che non hanno equivalenti nella classe String .

4. Il metodo containsAny

Il metodo containsAny controlla se una determinata stringa contiene un carattere nel set di caratteri specificato. Questo set di caratteri può essere passato sotto forma di String o char varargs.

Il seguente frammento di codice dimostra l'uso di due versioni sovraccaricate di questo metodo con verifica dei risultati:

String string = "baeldung.com"; boolean contained1 = StringUtils.containsAny(string, 'a', 'b', 'c'); boolean contained2 = StringUtils.containsAny(string, 'x', 'y', 'z'); boolean contained3 = StringUtils.containsAny(string, "abc"); boolean contained4 = StringUtils.containsAny(string, "xyz"); assertTrue(contained1); assertFalse(contained2); assertTrue(contained3); assertFalse(contained4);

5. Il metodo containsIgnoreCase

Il metodo containsIgnoreCase verifica se una determinata stringa contiene un'altra stringa senza distinzione tra maiuscole e minuscole.

Il seguente frammento di codice verifica che la stringa "baeldung.com" comprenda "BAELDUNG" quando le lettere maiuscole e minuscole vengono ignorate:

String string = "baeldung.com"; boolean contained = StringUtils.containsIgnoreCase(string, "BAELDUNG"); assertTrue(contained);

6. Il metodo countMatches

Il metodo counterMatches conta quante volte un carattere o una sottostringa appare in una determinata stringa.

Quanto segue è una dimostrazione di questo metodo, a conferma che "w" appare quattro volte e "com" fa due volte nella stringa "welcome to www.baeldung.com" :

String string = "welcome to www.baeldung.com"; int charNum = StringUtils.countMatches(string, 'w'); int stringNum = StringUtils.countMatches(string, "com"); assertEquals(4, charNum); assertEquals(2, stringNum);

7. Metodo di aggiunta e anticipazione

I metodi appendIfMissing e appendIfMissingIgnoreCase aggiungono un suffisso alla fine di una data stringa se non termina già con nessuno dei suffissi passati rispettivamente in modo sensibile al maiuscolo / minuscolo e insensibile.

Allo stesso modo, i metodi prependIfMissing e prependIfMissingIgnoreCase antepongono un prefisso all'inizio di una determinata stringa se non inizia con nessuno dei prefissi passati.

Nell'esempio seguente, i metodi appendIfMissing e prependIfMissing vengono utilizzati per aggiungere un suffisso e un prefisso alla stringa "baeldung.com" senza che questi affissi vengano ripetuti:

String string = "baeldung.com"; String stringWithSuffix = StringUtils.appendIfMissing(string, ".com"); String stringWithPrefix = StringUtils.prependIfMissing(string, "www."); assertEquals("baeldung.com", stringWithSuffix); assertEquals("www.baeldung.com", stringWithPrefix);

8. Metodo di cambio del caso

La classe String definisce già i metodi per convertire tutti i caratteri di una stringa in maiuscolo o minuscolo. Questa sottosezione illustra solo l'uso di metodi che cambiano il caso di una stringa in altri modi, inclusi swapCase , capitalize e uncapitalize .

Il metodo swapCase scambia il caso di una stringa, cambiando maiuscolo in minuscolo e minuscolo in maiuscolo:

String originalString = "baeldung.COM"; String swappedString = StringUtils.swapCase(originalString); assertEquals("BAELDUNG.com", swappedString);

Il metodo capitalize converte il primo carattere di una data stringa in maiuscolo, lasciando tutti i caratteri rimanenti invariati:

String originalString = "baeldung"; String capitalizedString = StringUtils.capitalize(originalString); assertEquals("Baeldung", capitalizedString);

Il metodo uncapitalize converte il primo carattere della stringa data in minuscolo, lasciando invariati tutti i caratteri rimanenti:

String originalString = "Baeldung"; String uncapitalizedString = StringUtils.uncapitalize(originalString); assertEquals("baeldung", uncapitalizedString);

9. Metodo di inversione

La classe StringUtils definisce due metodi per invertire le stringhe: reverse e reverseDelimited . Il metodo reverse riorganizza tutti i caratteri di una stringa nell'ordine opposto, mentre il metodo reverseDelimited riordina gruppi di caratteri, separati da un delimitatore specificato.

Il seguente frammento di codice inverte la stringa "baeldung" e convalida il risultato:

String originalString = "baeldung"; String reversedString = StringUtils.reverse(originalString); assertEquals("gnudleab", reversedString);

Con il metodo reverseDelimited , i caratteri vengono invertiti in gruppi anziché individualmente:

String originalString = "www.baeldung.com"; String reversedString = StringUtils.reverseDelimited(originalString, '.'); assertEquals("com.baeldung.www", reversedString);

10. Il metodo rotate ()

Il metodo rotate () sposta circolarmente i caratteri di una stringa di un numero di posizioni. Il frammento di codice sottostante sposta tutti i caratteri della stringa "baeldung" di quattro posizioni a destra e verifica il risultato:

String originalString = "baeldung"; String rotatedString = StringUtils.rotate(originalString, 4); assertEquals("dungbael", rotatedString);

11. Il metodo della differenza

Il metodo di differenza confronta due stringhe, restituendo il resto della seconda stringa, a partire dalla posizione in cui è diversa dalla prima. Il seguente frammento di codice confronta due stringhe: "Baeldung Tutorials" e "Baeldung Courses" in entrambe le direzioni e convalida il risultato:

String tutorials = "Baeldung Tutorials"; String courses = "Baeldung Courses"; String diff1 = StringUtils.difference(tutorials, courses); String diff2 = StringUtils.difference(courses, tutorials); assertEquals("Courses", diff1); assertEquals("Tutorials", diff2);

12. Conclusione

Questo tutorial introduce l'elaborazione delle stringhe in Apache Commons Lang 3 e esamina le API principali che possiamo utilizzare dalla classe della libreria StringUtils .

Come sempre, l'implementazione di tutti gli esempi e frammenti di codice sopra riportati può essere trovata nel progetto GitHub.