As you may be aware C#'s
string class don’t have a Reverse() function by default, so let’s discuss different ways
to reverse a given string:
Using manual reversal way:
The traditional
way is to reverse a string by manually looping through it character by character
and creating a new string.
string inputStr = "This is test string";
string outputStr = "";
for (int i = inputStr.Length - 1; i >= 0; i--)
{
outputStr += inputStr[i];
}
|
One
thing to remember though, if you are using this approach to reverse a large
string then you should use StringBuilder to create output string instead of
string because a string instance is immutable and you cannot change it after
it was created. Any operation that appears to change the string instead
returns a new instance.
|
Using Array.Reverse():
The
second approach we can reverse a string is with the inbuilt Array.Reverse()
method of Array class.
string inputStr = "This is test string";
char[] charArray =
inputStr.ToCharArray();
Array.Reverse(charArray);
string outputStr = new string(charArray);
|
Here first
of all we convert the given string to a character array and then we reverse
that array using in-built method, and in last we construct a new string from
the reversed array.
Reverse using LINQ:
LINQ
allows us to shorten string reversal into a one line of code. In this scenario
first of all the string is converted to a char array as in second approach.
Array implements IEnumerable, so we can use LINQ's Reverse()
method on it. After that with a call to ToArray() the resulting IEnumerable is then again converted to a character
array, which is then used in the string constructor.
string inputStr = "This is test string";
string outputStr = new string(inputStr.ToCharArray().Reverse().ToArray());
|
Create extension method for
reusability:
If we
need string reversal on several places in our program or application, in such
cases we can create an extension method on string and can use this wherever needed.
First of
all create an extension method under class StringExtensions.
static class StringExtensions
{
public static string ReverseString(this string inputStr)
{
return new string(inputStr.ToCharArray().Reverse().ToArray());
}
}
|
Once
extension method is ready to use then you can use it like any other string
extension methods i.e. ToString(), ToUpper() etc.
string inputStr = "This is test string";
Console.WriteLine(inputStr.ReverseString());
|
Comments
Post a Comment