Hoe het laatste teken van een tekenreeks verwijderen?

1. Overzicht

In dit korte artikel gaan we verschillende technieken bekijken en bespreken voor het verwijderen van het laatste teken van een Draad.

2. Met behulp van String.substring ()

De gemakkelijkste manier is om te gebruiken de ingebouwde deelstring () methode van de Draad klasse.

Om het laatste teken van een gegeven te verwijderen Draad, we moeten twee parameters gebruiken: 0 als startindex en index van het voorlaatste teken. Dat kunnen we bereiken door te bellen Draad‘S lengte() methode en aftrekken 1 van het resultaat.

Echter, deze methode is niet nulveilig en als we een lege string gebruiken, zal dit mislukken.

Om problemen met lege en lege strings op te lossen, kunnen we de methode in een helper-klasse verpakken:

openbare statische String removeLastChar (String s) 

We kunnen de code refactoren en Java 8 gebruiken:

openbare statische String removeLastCharOptional (String s) {return Optioneel.ofNullable (s) .filter (str -> str.length ()! = 0) .map (str -> str.substring (0, str.length () - 1 )). ofElse (s); }

3. Met behulp van StringUtils.substring ()

In plaats van het wiel opnieuw uit te vinden, kunnen we gebruiken StringUtils class van Apache Commons Lang3 bibliotheek, dat biedt nuttig Draad operaties. Een van hen is een null-veilig deelstring () methode, die uitzonderingen afhandelt.

Om op te nemen StringUtils we moeten onze pom.xml het dossier:

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () vereist drie parameters: een gegeven Draad, een index van het eerste teken (in ons geval is dit altijd 0) en een index van het voorlaatste teken. Nogmaals, we kunnen gewoon de lengte() methode en aftrekken 1:

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

Toch is deze operatie niet opnieuw nulveilig. Het werkt met leeg Snaren prima hoor.

4. Met behulp van StringUtils.chop ()

StringUtils klasse biedt de karbonade() methode die goed werkt met alle randscenario's: lege en null-tekenreeksen.

Het is heel gemakkelijk te gebruiken en vereist slechts één parameter: de Draad. Het enige doel is om het laatste teken te verwijderen. Niets meer niets minder:

StringUtils.chop (TEST_STRING);

5. Reguliere expressie gebruiken

We kunnen ook het laatste teken (of een willekeurig aantal tekens) verwijderen uit een Draad door goed gebruik te maken van reguliere expressies.

We kunnen bijvoorbeeld de vervang alles() methode van Draad klasse zelf - waarvoor twee parameters nodig zijn: reguliere expressie en de vervanging Draad:

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

Merk op dat, omdat we een methode aanroepen op de Draad - de operatie is natuurlijk niet nulveilig.

Ook, vervang alles() en regex-expressie kan op het eerste gezicht complex zijn. Je kunt hier meer lezen over regex, maar om de logica een beetje gebruiksvriendelijker te maken, kunnen we het in een helper class plaatsen:

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

Merk op dat als een Draad eindigt met een nieuwe regel, dan zal de bovenstaande methode mislukken als “.” in regex komt overeen met elk teken behalve regelterminators.

Laten we tot slot opnieuw schrijven de implementatie met Java 8:

openbare statische String removeLastCharRegexOptional (String s) {return Optioneel.ofNullable (s) .map (str -> str.replaceAll (". $", "")) .orElse (s); }

6. Conclusie

In dit korte artikel hebben we verschillende manieren besproken om alleen het laatste teken van een te verwijderen Draad - sommige handleiding, sommige direct uit de doos.

En als we meer flexibiliteit nodig hebben en we meer tekens moeten verwijderen, kunnen we de meer geavanceerde oplossing gebruiken met reguliere expressies.

Zoals altijd is de code die in het hele artikel wordt gebruikt, te vinden op GitHub.


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