Common Java Cookbook

Edition: 0.19

Download PDF or Read on Scribd

Download Examples (ZIP)

2.9. Reversing a String

2.9.1. Problem

You need to reverse a string.

2.9.2. Solution

Use StringUtils.reverse( ). Supply a string parameter to this method, and it will return a reversed copy. The following example reverses two strings:

String original = "In time, I grew tired of his babbling nonsense.";
String reverse = StringUtils.reverse( original );
String originalGenes = "AACGTCCCTTGGTTTCCCAAAGTTTCCCTTTGAAATATATGCCCGCG";
String reverseGenes = StringUtils.reverse( originalGenes );
System.out.println( "Original: " + original );
System.out.println( "Reverse: " + reverse );
System.out.println( "\n\nOriginal: " + originalGenes );
System.out.println( "Reverse: " + reverseGenes );

The output contains a reversed string along with an original string:

Original: In time, I grew tired of his babbling nonsense.
Reverse: .esnesnon gnilbbab sih fo derit werg I ,emit nI
Original: AACGTCCCTTGGTTTCCCAAAGTTTCCCTTTGAAATATATGCCCGCG
Reverse: GCGCCCGTATATAAAGTTTCCCTTTGAAACCCTTTGGTTCCCTGCAA

2.9.3. Discussion

Reversing a String is easy, but how would you rearrange the words in a sentence? StringUtils.reverseDelimited( ) can reverse a string of tokens delimited by a character, and a sentence is nothing more than a series of tokens separated by whitespace and punctuation. To reverse a simple sentence, chop off the final punctuation mark, and then reverse the order of words delimited by spaces. The following example reverses an unrealistically simple English sentence:

public Sentence reverseSentence(String sentence) {
    String reversed = StringUtils.chomp( sentence, "." );
    reversed = StringUtils.reverseDelimited( reversed, ' ' );
    reversed = reversed + ".";
    return reversed;
} 
....
String sentence = "I am Susan."
String reversed = reverseSentence( sentence ) );
System.out.println( sentence );
System.out.println( reversed );

The sentence is reversed and printed alongside the original:

I am Susan.
Susan am I.

Here, the order of the characters within each delimited token is preserved. Notice that this example includes StringUtils.chomp( ) with two parameters, the last specifying the character to chomp from the string. Instead of chomping a newline, in this example, the period is chomped off of the sentence before performing the delimited reversal.


Creative Commons License
Common Java Cookbook by Tim O'Brien is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 United States License.
Permissions beyond the scope of this license may be available at http://www.discursive.com/books/cjcook/reference/jakartackbk-PREFACE-1.html. Copyright 2009. Common Java Cookbook Chunked HTML Output. Some Rights Reserved.