Back to: C#.NET Programs and Algorithms
How to Reverse Each Word in a Given String in C#
In this article, I am going to discuss How to Reverse Each Word in a Given String in C# with some examples. Please read our previous article where we discussed How to Reverse a String in C#Ā program with some examples. As part of this article, we are going to use the following three approaches to reverse each word in a given string C#.
- Without using a built-in function
- Using Stack
- Using LINQ
Program Description:
The user will input a string and we need to reverse each word individually without changing its position in the string. Here, we will take the input as a string from the user and then we need to reverse each word individually without changing their position in the sentence as shown in the below image.

Method1: Without using any built-in function:
In the following example, we generate all words separated by space. Then reverse the words one by one.
using System;
using System.Collections.Generic;
using System.Text;
namespace LogicalPrograms
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter a String : ");
            string originalString = Console.ReadLine();
            StringBuilder reverseWordString = new StringBuilder();
            List<char> charlist = new List<char>();
            for (int i = 0; i < originalString.Length; i++)
            {
                if (originalString[i] == ' ' || i == originalString.Length - 1)
                {
                    if (i == originalString.Length - 1)
                        charlist.Add(originalString[i]);
                    for (int j = charlist.Count - 1; j >= 0; j--)
                        reverseWordString.Append(charlist[j]);
                    reverseWordString.Append(' ');
                    charlist = new List<char>();
                }
                else
                {
                    charlist.Add(originalString[i]);
                }    
            }
            Console.WriteLine($"Reverse Word String : {reverseWordString.ToString()}");
            Console.ReadKey();
        }      
    }
}
Output:

Method2: Using Stack to Reverse Each Word in C#
Here, we are using a stack to push all words before space. Then as soon as we encounter a space, we empty the stack. The program is self-explained, so please go through the comments line.
using System;
using System.Collections.Generic;
namespace LogicalPrograms
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter a String : ");
            string originalString = Console.ReadLine();
            Stack<char> charStack = new Stack<char>();
            // Traverse the given string and push all characters
            // to stack until we see a space.  
            for (int i = 0; i < originalString.Length; ++i)
            {
                if (originalString[i] != ' ')
                {
                    charStack.Push(originalString[i]);
                }
                // When seeing a space, then print contents of the stack.  
                else
                {
                    while (charStack.Count > 0)
                    {
                        Console.Write(charStack.Pop());
                    }
                    Console.Write(" ");
                }
            }
            // Since there may not be space after last word.  
            while (charStack.Count > 0)
            {
                Console.Write(charStack.Pop());
            }
            
            Console.ReadKey();
        }      
    }
}
Method3: Using Linq to Reverse Each Word in C#
using System;
using System.Linq;
namespace LogicalPrograms
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter a String : ");
            string originalString = Console.ReadLine();
            
            string reverseWordString = string.Join(" ", originalString
            .Split(' ')
            .Select(x => new String(x.Reverse().ToArray())));
            Console.WriteLine($"Reverse Word String : {reverseWordString}");
            Console.ReadKey();
        }      
    }
}
Output:

Code Explanation:
Split the input string using a single space as the separator.
The SplitĀ method is used for returning a string array that contains each word of the input string. We use the SelectĀ method for constructing a new string array, by reversing each character in each word. Finally, we use the JoinĀ method for converting the string array into a string.
In the next article, I am going to discuss How to Remove Duplicate Characters from a given string in C# using different mechanisms. I hope now you understood How to Reverse Each Word in a Given String in C# with different mechanisms.

public class ReverseEachWord
{
public static void Main(String[] args)
{
string a = Console.ReadLine();
ReverseWord(a);
}
public static void ReverseWord(string a)
{
string newString = string.Empty;
for (int i = a.Length-1; i >=0; i–)
{
newString = newString + a[i];
}
Console.WriteLine(newString);
}
}
// A simple attempt from my side š //
public class Program
{
public static void Main()
{
string str = “dotnettutorials rocks”;
var spcArr = str.Split(‘ ‘);
str = “”;
foreach (var w in spcArr)
{
char[] arr = w.ToCharArray();
for (int i = arr.Length – 1; i >= 0; i–)
{
str += arr[i];
}
str += ” “;
}
Console.WriteLine(str.Trim());
}
}
static void Main()
{
string a = Console.ReadLine();
string[] g = a.Split(‘ ‘);
string reverse = “”;
string[] q = new string[100];
foreach (var h in g)
{
int i = 0;
q[i] = h;
foreach (char ch in q[i])
reverse = ch + reverse;
Console.Write(reverse+” “);
reverse = “”;
i++;
}
}
public static void Main(string[] args)
{
string s=”siva bhaskar reddy”;
string[]str1=s.Split(” “);
foreach(string str in str1)
{
string rev=null;
for(int i=str.Length-1;i>=0;i–)
{
rev=rev+str[i];
}
Console.Write(rev+” “);
}
}