Strings in C# - Part 4


Introduction


Well, you need to learn Part 1 of this post to understand this better. In the previous posts we have tried to change the content of strings using various methods like Replace(), ToUpper() etc. But if you recall, value of a string cannot be modified once it is established. The methods like Replace() may seems to change the content of the string but actually, those methods just output a copy of the string and original string remains same.

Look at example:

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "Hello Abhimanyu";
            Console.WriteLine(str1);

            string str2 = str1.ToUpper();
            Console.WriteLine(str2);

            //Let's see original string variable
            Console.WriteLine(str1);

            Console.ReadKey();
        }
    }
}

/*
Output:-
Hello Abhimanyu
HELLO ABHIMANYU
Hello Abhimanyu
*/

Thus, whenever we want to modify a string, we should have a new string to store the modified version. That is, every time we have to work on a copy of the string but not the original. To avoid this inefficiency, C# provides a class called StringBuilder contained in the namespace System.Text. Any modification on an instance of StringBuilder will affect the underlying buffer itself.

Let's have an example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; //for StringBuilder

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder str1 = new StringBuilder("Hello Abhimanyu");
            Console.WriteLine(str1);
            str1.Append(", how are you?");
            Console.WriteLine(str1);

            Console.ReadKey();
        }
    }
}

/*
Output:-
Hello Abhimanyu
Hello Abhimanyu, how are you?
*/

To modify the string content, we have following methods:

(i) Append: Appends information to the end of the current StringBuilder.
(ii) AppendFormat: Replaces a format specifier passed in a string with formatted text. Read and modify method.
(iii) Insert: Inserts a string or object into the specified index of the current StringBuilder.
(iv) Remove: Removes a specified number of characters from the current StringBuilder.
(v) Replace: Replaces a specified character at a specified index.

Let's have an example:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; //for StringBuilder

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Using StringBuilder.Append()
            StringBuilder str1 = new StringBuilder("Hello Abhimanyu");
            Console.WriteLine(str1);  //output: Hello Abhimanyu
            str1.Append(", how are you?");
            Console.WriteLine(str1);  //output: Hello Abhimanyu, how are you?

            //Using StringBuilder.AppendFormat()
            string sen1 = "Hello";
            string sen2 = "Abhimanyu";
            string sen3 = ", how are you?";
            StringBuilder str2 = new StringBuilder();
            str2.AppendFormat("{0}", sen1); //output: Hello
            Console.WriteLine(str2);
            str2.AppendFormat(" {0}", sen2);  //output: Hello Abhimanyu
            Console.WriteLine(str2);
            str2.AppendFormat(" {0}", sen3);  //output: Hello Abhimanyu, how are you
            Console.WriteLine(str2);

            //Using StringBuilder.Insert()
            StringBuilder str3 = new StringBuilder("Hello ");
            str3.Insert(6, "Abhimanyu");
            Console.WriteLine(str3);  //output: Hello Abhimanyu

            //Using StringBuilder.Remove()
            StringBuilder str4 = new StringBuilder("Hello .");
            Console.WriteLine(str4);  //output: Hello  .
            str4.Remove(6, 1);
            Console.WriteLine(str4);  //output: Hello

            //Using StringBuilder.Replace()
            StringBuilder str5 = new StringBuilder("Hello Abhi");
            Console.WriteLine(str5); // output: Hello Abhi
            str5.Replace("Abhi""Abhimanyu");
            Console.WriteLine(str5); // output: Hello Abhimanyu

            Console.ReadKey();
        }
    }
}

Thank you for reading. Keep Commenting.

Comments

Popular posts from this blog

Migrating database from ASP.NET Identity to ASP.NET Core Identity

Customize User's Profile in ASP.NET Identity System

Lambda two tables and three tables inner join code samples