Come rimuovere l'ultimo carattere di una stringa?

1. Panoramica

In questo rapido articolo, esamineremo e discuteremo diverse tecniche per rimuovere l'ultimo carattere di una stringa.

2. Utilizzo di String.substring ()

Il modo più semplice è usare il metodo substring () della classe String .

Per rimuovere l'ultimo carattere di una data stringa, dobbiamo usare due parametri: 0 come indice iniziale e indice del penultimo carattere. Possiamo ottenere che chiamando String s' length () metodo e sottraendo 1 dal risultato.

Tuttavia, questo metodo non è a prova di null e se usiamo una stringa vuota non funzionerà.

Per superare i problemi con stringhe null e vuote, possiamo racchiudere il metodo in una classe helper:

public static String removeLastChar(String s) 

Possiamo effettuare il refactoring del codice e utilizzare Java 8:

public static String removeLastCharOptional(String s) { return Optional.ofNullable(s) .filter(str -> str.length() != 0) .map(str -> str.substring(0, str.length() - 1)) .orElse(s); }

3. Utilizzo di StringUtils.substring ()

Invece di reinventare la ruota, possiamo usare la classe StringUtils dalla libreria Apache Commons Lang3 , che offre utili operazioni String . Uno di questi è un metodo substring () null-safe , che gestisce le eccezioni.

Per includere StringUtils dobbiamo aggiornare il nostro file pom.xml :

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () richiede tre parametri: una data String, un indice del primo carattere (nel nostro caso sarà sempre 0) e indice del penultimo carattere. Di nuovo, possiamo semplicemente usare il metodo length () e sottrarre 1:

String TEST_STRING = "abcdef"; StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);

Tuttavia, questa operazione non è di nuovo a prova di null. Funzionerà comunque bene con le stringhe vuote .

4. Utilizzo di StringUtils.chop ()

La classe StringUtils fornisce il metodo chop () che funziona bene con tutti gli scenari edge: stringhe vuote e null .

È molto facile da usare e richiede un solo parametro: la stringa. Il suo unico scopo è rimuovere l'ultimo carattere. Niente di più, niente di meno:

StringUtils.chop(TEST_STRING);

5. Utilizzo dell'espressione regolare

Possiamo anche rimuovere l'ultimo carattere (o qualsiasi numero di caratteri) da una stringa facendo buon uso delle espressioni regolari.

Ad esempio, possiamo utilizzare il metodo replaceAll () della classe String stessa , che accetta due parametri: l'espressione regolare e la stringa sostitutiva :

TEST_STRING.replaceAll(".$", "");

Si noti che, poiché stiamo chiamando un metodo sulla stringa , l'operazione non è, ovviamente, a prova di null .

Inoltre, sostituireAll () e l'espressione regex possono essere complesse a prima vista. Puoi leggere di più su regex qui, ma per rendere la logica un po 'più user-friendly, possiamo racchiuderla in una classe helper:

public static String removeLastCharRegex(String s) { return (s == null) ? null : s.replaceAll(".$", ""); }

Nota che se una stringa termina con una nuova riga, il metodo precedente fallirà come "." in regex corrisponde a qualsiasi carattere tranne che per i terminatori di riga.

Infine, riscriviamo l'implementazione con Java 8 :

public static String removeLastCharRegexOptional(String s) { return Optional.ofNullable(s) .map(str -> str.replaceAll(".$", "")) .orElse(s); }

6. Conclusione

In questo breve articolo, abbiamo discusso diversi modi per rimuovere solo l'ultimo carattere di una stringa : alcuni manuali, altri pronti fuori dagli schemi.

E, se abbiamo bisogno di maggiore flessibilità e abbiamo bisogno di rimuovere più caratteri, possiamo la soluzione più avanzata con espressioni regolari.

Come sempre, il codice utilizzato in tutto l'articolo può essere trovato su GitHub.