Hvordan fjerne den siste karakteren til en streng?

1. Oversikt

I denne raske artikkelen skal vi sjekke og diskutere forskjellige teknikker for å fjerne den siste karakteren til en String.

2. Bruke String.substring ()

Den enkleste måten er å bruke den innebygde substring () metode av String klasse.

For å fjerne det siste tegnet i et gitt Streng, vi må bruke to parametere: 0 som startindeks, og indeks for den nest siste karakteren. Vi kan oppnå det ved å ringe String‘S lengde() metode og trekke fra 1 fra resultatet.

Derimot, denne metoden er ikke null-sikker og hvis vi bruker en tom streng, vil dette mislykkes.

For å løse problemer med null og tomme strenger, kan vi pakke metoden i en hjelperklasse:

offentlig statisk streng removeLastChar (streng s) 

Vi kan omforme koden og bruke Java 8:

offentlig statisk streng removeLastCharOptional (String s) {return Optional.ofNullable (s). filter (str -> str.length ()! = 0) .map (str -> str.substring (0, str.length () - 1 ) eller Else (s); }

3. Bruke StringUtils.substring ()

I stedet for å finne opp hjulet på nytt, kan vi bruke det StringUtils klasse fra Apache Commons Lang3 biblioteket, som tilbyr nyttig String operasjoner. En av dem er en null-safe substring () metode, som håndterer unntak.

Å inkludere StringUtils vi må oppdatere vår pom.xml fil:

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () krever tre parametere: en gitt Streng, en indeks av det første tegnet (i vårt tilfelle vil det alltid være 0) og en indeks for det nest siste tegnet. Igjen kan vi ganske enkelt bruke lengde() metode og trekke fra 1:

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

Likevel er denne operasjonen ikke null-trygg igjen. Det vil fungere med tomt Strenger greit skjønt.

4. Bruke StringUtils.chop ()

StringUtils klasse gir hugge() metode som fungerer bra med alle kantscenarier: tomme og null strenger.

Det er veldig enkelt å bruke og krever bare en parameter: String. Hensikten er å fjerne det siste tegnet. Intet mer, intet mindre:

StringUtils.chop (TEST_STRING);

5. Bruke vanlig uttrykk

Vi kan også fjerne det siste tegnet (eller et hvilket som helst antall tegn) fra a String ved å gjøre god bruk av vanlige uttrykk.

For eksempel kan vi bruke erstatt alle () Metode av String klassen selv - som tar to parametere: vanlig uttrykk og erstatning String:

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

Merk at fordi vi kaller en metode på String - operasjonen er selvfølgelig ikke null-safe.

Også, erstatt alle () og regex-uttrykk kan være komplekst ved første blikk. Du kan lese mer om regex her, men for å gjøre logikken litt mer brukervennlig, kan vi pakke den inn i en hjelperklasse:

offentlig statisk streng fjerneLastCharRegex (streng s) {retur (s == null)? null: s.replaceAll (". $", ""); }

Merk at hvis en String slutter med en ny linje, da vil metoden ovenfor mislykkes som “.” i regex samsvarer med alle tegn unntatt linjeterminatorer.

Til slutt, la oss skrive om implementeringen med Java 8:

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

6. Konklusjon

I denne korte artikkelen har vi diskutert forskjellige måter å bare fjerne den siste karakteren av en String - noen manualer, noen klare ut av esken.

Og hvis vi trenger mer fleksibilitet og vi trenger å fjerne flere tegn, kan vi den mer avanserte løsningen med vanlige uttrykk.

Som alltid kan koden som brukes i hele artikkelen finnes på GitHub.


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