Plasser en streng med nuller eller mellomrom i Java

1. Oversikt

I denne korte opplæringen vil vi se hvordan du kan padje en String i Java. Vi fokuserer hovedsakelig på en venstre pute, noe som betyr at vi legger de ledende mellomrom eller nuller til den til den når ønsket lengde.

Tilnærmingen til høyre polstret String er veldig lik, så vi vil bare påpeke forskjellene.

2. Pute a String Bruke egendefinerte metoder

De String klasse i Java gir ikke en praktisk metode for polstring, så la oss lage flere metoder alene. Men la oss først stille noen forventninger:

assertEquals ("123456", padLeftZeros ("123456", 10)); assertEquals ("0000123456", padLeftZeros ("123456", 10));

2.1. Ved hjelp av StringBuilder

Vi kan oppnå dette med StringBuilder og litt prosessellogikk:

public String padLeftZeros (String inputString, int length) {if (inputString.length ()> = length) {return inputString; } StringBuilder sb = ny StringBuilder (); mens (sb.length () <lengde - inputString.length ()) {sb.append ('0'); } sb.append (inputString); returner sb.toString (); }

Vi kan se her at hvis originaltekstens lengde er lik eller større enn ønsket lengde, returnerer vi den uendrede versjonen av den. Ellers lager vi et nytt Streng, starter med mellomrom, og legger til den originale.

Selvfølgelig, hvis vi ville pad med en annen karakter kan vi bare bruke den i stedet for en 0.

På samme måte, hvis vi ønsker å rette pad, trenger vi bare å gjøre nyStringBuilder (inputString) i stedet, og legg deretter til mellomrom på slutten.

2.2. Ved hjelp av underlag

En annen måte å gjøre venstre polstring på er å lage en String med ønsket lengde som bare inneholder padtegn, og bruk deretter substring () metode:

StringBuilder sb = ny StringBuilder (); for (int i = 0; i <lengde; i ++) {sb.append (''); } returner sb.substring (inputString.length ()) + inputString;

2.3. Ved hjelp av String.format

Og til slutt, siden Java 5, kan vi bruke String.format():

returner String.format ("% 1 $" + lengde + "s", inputString) .replacement ('', '0');

Vi bør være oppmerksom på at utfyllingsoperasjonen som standard utføres ved bruk av mellomrom. Det er grunnen til at vi må bruke erstatte() metode hvis vi vil putte med nuller eller andre tegn.

For den rette puten må vi bare bruke et annet flagg: %1$-

3. Pute a String Bruke biblioteker

Og det er eksterne biblioteker som allerede tilbyr polstringsfunksjoner.

3.1. Apache Commons Lang

Apache Commons Lang tilbyr en pakke med Java-verktøyklasser. En av de mest populære er StringUtils.

For å bruke den, må vi inkludere den i prosjektet vårt ved å legge til dens avhengighet til vårt pom.xml fil:

 org.apache.commons commons-lang3 3.8.1 

Og så passerer vi inputString og lengde, akkurat som metodene vi laget. Vi kan også passere polstringskarakteren:

assertEquals ("123456", StringUtils.leftPad ("123456", 10)); assertEquals ("0000123456", StringUtils.leftPad ("123456", 10, "0"));

Igjen, den String vil være polstret med mellomrom som standard, eller vi må eksplisitt sette et annet pad-tegn.

Det er også tilsvarende rightPad () metoder.

For å utforske flere funksjoner i Apache Commons Lang 3, kan du sjekke ut vår introduksjonsveiledning. Hvis du vil se andre måter av String manipulering ved hjelp av StringUtils klasse, se denne artikkelen.

3.2. Google Guava

Et annet bibliotek som vi kan bruke er Googles Guava. Selvfølgelig må vi først legge det til prosjektet ved å legge til avhengighet:

 com.google.guava guava 27.0-jre 

Og bruk deretter Strenger klasse:

assertEquals ("123456", Strings.padStart ("123456", 10, '')); assertEquals ("0000123456", Strings.padStart ("123456", 10, '0'));

Det er ingen standard padkarakter i denne metoden, så vi må sende den hver gang.

Til høyre pad kan vi bruke padEnd () metode.

Guava-biblioteket tilbyr mange flere funksjoner, og vi har dekket mange av dem. Du kan se her for Guava-relaterte artikler.

4. Konklusjon

I denne raske artikkelen illustrerte vi hvordan vi kan blokkere en String i Java. Vi presenterte eksempler ved hjelp av egne implementeringer eller eksisterende biblioteker.

Som vanlig kan du finne en komplett kildekode på GitHub.


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