So kehren Sie einen String in Java um

1. Übersicht

In diesem kurzen Tutorial werden wir sehen, wie wir einen String in Java umkehren können .

Wir beginnen diese Verarbeitung mit einfachen Java-Lösungen. Als nächstes werfen wir einen Blick auf die Optionen, die Bibliotheken von Drittanbietern wie Apache Commons bieten.

Außerdem zeigen wir, wie Sie die Reihenfolge der Wörter in einem Satz umkehren .

2. Eine traditionelle for- Schleife

Wir wissen, dass Zeichenfolgen in Java unveränderlich sind. Ein unveränderliches Objekt ist ein Objekt, dessen interner Zustand nach seiner vollständigen Erstellung konstant bleibt .

Daher können wir einen String nicht umkehren, indem wir ihn ändern. Aus diesem Grund müssen wir einen weiteren String erstellen .

Schauen wir uns zunächst ein einfaches Beispiel mit einer for- Schleife an. Wir werden die String- Eingabe vom letzten bis zum ersten Element durchlaufen und jedes Zeichen zu einem neuen String verketten :

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

Wie wir sehen können, müssen wir an den Eckfällen vorsichtig sein und sie separat behandeln.

Um das Beispiel besser zu verstehen, können wir einen Komponententest erstellen:

@Test public void whenReverseIsCalled_ThenCorrectStringIsReturned() { String reversed = ReverseStringExamples.reverse("cat"); String reversedNull = ReverseStringExamples.reverse(null); String reversedEmpty = ReverseStringExamples.reverse(StringUtils.EMPTY); assertEquals("tac", reversed); assertEquals(null, reversedNull); assertEquals(StringUtils.EMPTY, reversedEmpty); }

3. Ein StringBuilder

Java bietet auch einige Mechanismen wie StringBuilder und StringBuffer , die eine veränderbare Folge von Zeichen erstellen . Diese Objekte verfügen über eine reverse () -Methode, mit der wir das gewünschte Ergebnis erzielen können.

Hier müssen wir einen StringBuilder aus der String- Eingabe erstellen und dann die reverse () -Methode aufrufen :

public String reverseUsingStringBuilder(String input) { if (input == null) { return null; } StringBuilder output = new StringBuilder(input).reverse(); return output.toString(); }

4. Apache Commons

Apache Commons ist eine beliebte Java-Bibliothek mit vielen Dienstprogrammklassen, einschließlich der Manipulation von Zeichenfolgen.

Wie üblich müssen Sie zunächst die Maven-Abhängigkeit hinzufügen, um mit Apache Commons arbeiten zu können:

 org.apache.commons commons-lang3 3.9 

Die StringUtils- Klasse ist das, was wir hier brauchen, da sie die reverse () -Methode ähnlich wie StringBuilder bereitstellt .

Ein Vorteil der Verwendung dieser Bibliothek besteht darin, dass ihre Dienstprogrammmethoden null- sichere Operationen ausführen . Wir müssen die Randfälle also nicht separat behandeln.

Erstellen wir eine Methode, die unseren Zweck erfüllt und die StringUtils- Klasse verwendet:

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

Wenn wir uns diese drei Methoden ansehen, können wir mit Sicherheit sagen, dass die dritte die einfachste und am wenigsten fehleranfällige Methode ist, einen String umzukehren .

5. Umkehren der Reihenfolge der Wörter in einem Satz

Nehmen wir nun an, wir haben einen Satz mit durch Leerzeichen getrennten Wörtern und ohne Satzzeichen. Wir müssen die Reihenfolge der Wörter in diesem Satz umkehren.

Wir können dieses Problem in zwei Schritten lösen: Teilen des Satzes durch das Leerzeichen und anschließende Verkettung der Wörter in umgekehrter Reihenfolge.

Zunächst zeigen wir einen klassischen Ansatz. Wir werden die S tring.split () -Methode verwenden, um den ersten Teil unseres Problems zu erfüllen. Als Nächstes durchlaufen wir das resultierende Array rückwärts und verketten die Wörter mit einem StringBuilder . Natürlich müssen wir auch ein Leerzeichen zwischen diesen Wörtern einfügen:

public String reverseTheOrderOfWords(String sentence) { if (sentence == null) { return null; } StringBuilder output = new StringBuilder(); String[] words = sentence.split(" "); for (int i = words.length - 1; i >= 0; i--) { output.append(words[i]); output.append(" "); } return output.toString().trim(); }

Zweitens werden wir die Verwendung der Apache Commons-Bibliothek in Betracht ziehen. Dies hilft uns erneut dabei, einen besser lesbaren und weniger fehleranfälligen Code zu erzielen. Wir müssen nur die StringUtils.reverseDelimited () -Methode mit dem Eingabesatz und dem Trennzeichen als Argumente aufrufen :

public String reverseTheOrderOfWordsUsingApacheCommons(String sentence) { return StringUtils.reverseDelimited(sentence, ' '); }

6. Fazit

In diesem Tutorial haben wir uns zunächst verschiedene Möglichkeiten zum Umkehren eines Strings in Java angesehen. Wir haben einige Beispiele mit Java-Kern sowie einer beliebten Drittanbieter-Bibliothek wie Apache Commons durchgearbeitet.

Als nächstes haben wir gesehen, wie man die Reihenfolge der Wörter in einem Satz in zwei Schritten umkehrt. Diese Schritte können auch hilfreich sein, um andere Permutationen eines Satzes zu erreichen.

Wie üblich sind alle in diesem Tutorial gezeigten Codebeispiele auf GitHub verfügbar.