Sådan vendes en streng i Java

1. Oversigt

I denne hurtige vejledning skal vi se hvordan vi kan vende om a Snor i Java.

Vi begynder at udføre denne behandling ved hjælp af almindelige Java-løsninger. Dernæst ser vi på de muligheder, som tredjepartsbiblioteker som Apache Commons giver.

Desuden demonstrerer vi hvordan man vender rækkefølgen af ​​ord i en sætning.

2. En traditionel til Sløjfe

Vi ved, at strenge er uforanderlige i Java. Et uforanderligt objekt er et objekt, hvis den interne tilstand forbliver konstant efter at den er blevet helt oprettet.

Derfor kan vi ikke vende om a Snor ved at ændre det. Vi er nødt til at skabe en anden Snor af denne grund.

Lad os først se et grundlæggende eksempel ved hjælp af en til løkke. Vi kommer til at gentage over Snor input fra det sidste til det første element og sammenkæde hvert tegn til et nyt Snor:

public String reverse (String input) {if (input == null) {return input; } Strengoutput = ""; for (int i = input.length () - 1; i> = 0; i--) {output = output + input.charAt (i); } returnere output; }

Som vi kan se, skal vi være forsigtige i hjørnesagerne og behandle dem separat.

For bedre at forstå eksemplet kan vi oprette en enhedstest:

@Test offentlig ugyldig nårReverseIsCalled_ThenCorrectStringIsReturned () {String reversed = ReverseStringExamples.reverse ("cat"); String reversedNull = ReverseStringExamples.reverse (null); Streng reversedEmpty = ReverseStringExamples.reverse (StringUtils.EMPTY); assertEquals ("tac", omvendt); assertEquals (null, reversedNull); assertEquals (StringUtils.EMPTY, reversedEmpty); }

3. A StringBuilder

Java tilbyder også nogle mekanismer som StringBuilder og StringBuffer der skaber en ændret sekvens af tegn. Disse objekter har en baglæns() metode, der hjælper os med at opnå det ønskede resultat.

Her skal vi oprette en StringBuilder fra Snor input, og ring derefter til baglæns() metode:

public String reverseUsingStringBuilder (String input) {if (input == null) {return null; } StringBuilder-output = ny StringBuilder (input). Omvendt (); returnere output.toString (); }

4. Apache Commons

Apache Commons er et populært Java-bibliotek med mange hjælpeklasser, herunder strengmanipulation.

Som sædvanlig skal vi først tilføje Maven-afhængighed for at komme i gang med Apache Commons:

 org.apache.commons commons-lang3 3.9 

Det StringUtils klasse er det, vi har brug for her, fordi det giver baglæns() metode svarende til StringBuilder.

En fordel ved at bruge dette bibliotek er, at dets hjælpemetoder udfører nul-sikker drift. Så vi behøver ikke at behandle edge cases separat.

Lad os oprette en metode, der opfylder vores formål og bruger StringUtils klasse:

public String reverseUsingApacheCommons (String input) {return StringUtils.reverse (input); }

Ser vi på disse tre metoder, kan vi bestemt sige, at den tredje er den enkleste og mindst udsatte fejl måde at vende om på Snor.

5. Vend ordorden i en sætning

Lad os antage, at vi har en sætning med ord adskilt af mellemrum og ingen tegnsætningstegn. Vi er nødt til at vende rækkefølgen af ​​ord i denne sætning.

Vi kan løse dette problem i to trin: opdele sætningen med mellemrummet og derefter sammenkæde ordene i omvendt rækkefølge.

Først viser vi en klassisk tilgang. Vi skal bruge String.split () metode for at opfylde den første del af vores problem. Derefter gentages det bagud gennem det resulterende array og sammenkædes ordene ved hjælp af a StringBuilder. Selvfølgelig skal vi også tilføje et mellemrum mellem disse ord:

public String reverseTheOrderOfWords (String sætning) {if (sætning == null) {return null; } StringBuilder output = ny StringBuilder (); Streng [] ord = sætning.split (""); for (int i = ord. længde - 1; i> = 0; i -) {output.append (ord [i]); output.append (""); } returner output.toString (). trim (); }

For det andet overvejer vi at bruge Apache Commons-biblioteket. Endnu en gang hjælper det os med at opnå en mere læsbar og mindre fejlbenyttet kode. Vi behøver kun at ringe til StringUtils.reverseDelimited () metode med indgangssætningen og skillelinjen som argumenter:

public String reverseTheOrderOfWordsUsingApacheCommons (String sætning) {return StringUtils.reverseDelimited (sætning, ''); }

6. Konklusion

I denne vejledning har vi først set på forskellige måder at vende om på Snor i Java. Vi gennemgik nogle eksempler ved hjælp af core Java samt brug af et populært tredjepartsbibliotek som Apache Commons.

Dernæst har vi set, hvordan man vender rækkefølgen af ​​ord i en sætning i to trin. Disse trin kan også være nyttige til at opnå andre permutationer af en sætning.

Som normalt er alle kodeeksempler vist i denne vejledning tilgængelige på GitHub.


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