Hur tar man bort den sista karaktären av en sträng?

1. Översikt

I den här snabba artikeln ska vi kontrollera och diskutera olika tekniker för att ta bort den sista karaktären i en sträng.

2. Använda String.substring ()

Det enklaste sättet är att använda den inbyggda substring () -metoden i strängklassen .

För att ta bort det sista tecknet i en viss sträng måste vi använda två parametrar: 0 som startindex och index för den näst sista karaktären. Vi kan uppnå detta genom att ringa String s längd () metod och subtrahera ett från resultatet.

Denna metod är dock inte noll-säker och om vi använder en tom sträng kommer det att misslyckas.

För att övervinna problem med noll och tomma strängar kan vi sätta in metoden i en hjälpklass:

public static String removeLastChar(String s) 

Vi kan omformulera koden och använda 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. Använda StringUtils.substring ()

Istället för att uppfinna hjulet på nytt kan vi använda StringUtils- klassen från Apache Commons Lang3- biblioteket, som erbjuder användbara strängåtgärder . En av dem är en null-safe substring () -metod som hanterar undantag.

För att inkludera StringUtils måste vi uppdatera vår pom.xml- fil:

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () kräver tre parametrar: en given sträng, ett index för det första tecknet (i vårt fall blir det alltid 0) och index för den näst sista karaktären. Återigen kan vi helt enkelt använda metoden längd () och subtrahera 1:

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

Ändå är denna operation inte noll-säker igen. Det kommer dock att fungera med tomma strängar .

4. Använda StringUtils.chop ()

StringUtils- klassen tillhandahåller chop () -metoden som fungerar bra med alla kantscenarier: tomma och nullsträngar .

Det är väldigt enkelt att använda och kräver bara en parameter: Strängen. Dess enda syfte är att ta bort den sista karaktären. Varken mer eller mindre:

StringUtils.chop(TEST_STRING);

5. Använda Regular Expression

Vi kan också ta bort det sista tecknet (eller valfritt antal tecken) från en sträng genom att använda regelbundna uttryck.

Till exempel kan vi använda replaceAll () metoden String klassen själv - som tar två parametrar: reguljära uttryck och ersättnings String :

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

Observera att eftersom vi kallar en metod för strängen - är operationen naturligtvis inte noll-säker .

Dessutom replaceAll () och regex uttryck kan vara komplicerat vid första anblicken. Du kan läsa mer om regex här, men för att göra logiken lite mer användarvänlig kan vi lägga in den i en hjälpklass:

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

Observera att om en sträng slutar med en ny rad så misslyckas ovanstående metod som "." i regex matchar alla tecken utom linjeterminatorer.

Slutligen, låt oss skriva om implementeringen med Java 8 :

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

6. Sammanfattning

I den här korta artikeln har vi diskuterat olika sätt att bara ta bort den sista karaktären i en sträng - några manualer, några redo ur lådan.

Och om vi behöver mer flexibilitet och vi behöver ta bort fler tecken, kan vi den mer avancerade lösningen med reguljära uttryck.

Som alltid kan koden som används i hela artikeln hittas på GitHub.