Come rimuovere un prefisso dalle stringhe in Groovy

1. Introduzione

In questo rapido tutorial, impareremo come rimuovere il prefisso da una stringa in Groovy.

Per prima cosa, vedremo cosa offre la classe String per questo scopo. Dopodiché, passeremo alle espressioni regolari e vedremo come possiamo usarle per rimuovere un prefisso.

2. Utilizzo di metodi stringa

In generale, Groovy è considerato un linguaggio dinamico per l'ecosistema Java. Pertanto, possiamo ancora utilizzare ogni metodo di classe Java String insieme a quelli nuovi Groovy. Tuttavia, per la rimozione del prefisso, c'è ancora l'assenza di un metodo semplice come removePrefix () .

La rimozione di un prefisso dalle stringhe Groovy consiste in due passaggi: prima conferma e poi rimozione . Entrambi questi passaggi possono essere eseguiti utilizzando la classe StringGroovyMethods che offre molti metodi di utilità per la manipolazione delle stringhe.

2.1. startsWith () Metodo

Il metodo startWith () verifica se una stringa inizia con un prefisso specifico. Restituisce true se il prefisso esiste e false in caso contrario.

Cominciamo con una chiusura strepitosa:

@Test public void whenCasePrefixIsRemoved_thenReturnTrue(){ def trimPrefix = { it.startsWith('Groovy-') ? it.minus('Groovy-') : it } def actual = trimPrefix("Groovy-Tutorials at Baeldung") def expected = "Tutorials at Baeldung" assertEquals(expected, actual) } 

Una volta confermata l'esistenza, possiamo anche utilizzare il metodo substring () per rimuoverlo:

trimPrefix.substring('Groovy-'.length()) 

2.2. startsWithIgnoreCase () Metodo

Il metodo startsWith () fa distinzione tra maiuscole e minuscole . Quindi, è necessario uno sforzo manuale per negare l'effetto del caso applicando i metodi toLowerCase () o toUpperCase () .

Come suggerisce il nome, startsWithIgnoreCase () cerca un prefisso senza considerare il caso. Restituisce true se esiste un prefisso e false in caso contrario.

Diamo un'occhiata a come utilizzare questo metodo:

@Test public void whenPrefixIsRemovedWithIgnoreCase_thenReturnTrue() { String prefix = "groovy-" String trimPrefix = "Groovy-Tutorials at Baeldung" def actual if(trimPrefix.startsWithIgnoreCase(prefix)) { actual = trimPrefix.substring(prefix.length()) } def expected = "Tutorials at Baeldung" assertEquals(expected, actual) } 

2.3. startsWithAny () Metodo

Le soluzioni di cui sopra sono utili quando dobbiamo controllare un solo prefisso. Quando si tratta di controllare più prefissi, Groovy fornisce anche il supporto per controllare più prefissi.

Il metodo startsWithAny () controlla se CharSequence inizia con i prefissi specificati. Una volta confermato il prefisso, possiamo applicare la logica in base alle esigenze:

String trimPrefix = "Groovy-Tutorials at Baeldung" if (trimPrefix.startsWithAny("Java", "Groovy", "Linux")) { // logic to remove prefix } 

3. Utilizzo di Regex

Un'espressione regolare è un modo potente per abbinare o sostituire un modello. Groovy ha un operatore pattern ~ che fornisce un modo semplice per creare un'istanza java.util.regex.Pattern .

Definiamo una semplice espressione regolare per rimuovere un prefisso:

@Test public void whenPrefixIsRemovedUsingRegex_thenReturnTrue() { def regex = ~"^groovy-" String trimPrefix = "groovy-Tutorials at Baeldung" String actual = trimPrefix - regex def expected = "Tutorials at Baeldung" assertEquals("Tutorials at Baeldung", actual) } 

La versione senza distinzione tra maiuscole e minuscole dell'espressione regolare precedente:

def regex = ~"^([Gg])roovy-" 

L'operatore del cursore ^ si assicurerà che la sottostringa specificata esista all'inizio.

3.1. Metodo replaceFirst ()

Utilizzando espressioni regolari insieme a metodi di stringhe native, possiamo eseguire trucchi molto potenti. Il metodo replaceFirst () è uno di questi metodi. Sostituisce la prima occorrenza che corrisponde all'espressione regolare data.

Rimuoviamo un prefisso usando il metodo replaceFirst () :

@Test public void whenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { def regex = ~"^groovy" String trimPrefix = "groovyTutorials at Baeldung's groovy page" String actual = trimPrefix.replaceFirst(regex, "") def expected = "Tutorials at Baeldung's groovy page" assertEquals(expected, actual) } 

3.2. Metodo replaceAll ()

Proprio come replaceFirst () , anche replaceAll () accetta un'espressione regolare e una sostituzione. Sostituisce ogni sottostringa che corrisponde ai criteri specificati . Per rimuovere un prefisso, possiamo usare anche questo metodo.

Usiamo replaceAll () per sostituire una sottostringa solo all'inizio della stringa:

@Test public void whenPrefixIsRemovedUsingReplaceAll_thenReturnTrue() { String trimPrefix = "groovyTutorials at Baeldung groovy" String actual = trimPrefix.replaceAll(/^groovy/, "") def expected = "Tutorials at Baeldung groovy" assertEquals(expected, actual) } 

4. Conclusione

In questo rapido tutorial, abbiamo esplorato diversi modi per rimuovere i prefissi da una stringa. Per confermare l'esistenza di un prefisso, abbiamo visto come farlo sia per le stringhe maiuscole che per quelle minuscole.

Allo stesso tempo, abbiamo visto come rilevare un prefisso tra molte sottostringhe fornite. Abbiamo anche esaminato più metodi che possono essere utilizzati per rimuovere una sottostringa. Infine, abbiamo discusso brevemente il ruolo della regex per questo scopo.

Come sempre, tutti gli esempi di codice possono essere trovati su GitHub.