การต่อ String (String Concatenation)

  1. การใช้โอเปอเรเตอร์ + และ +=
  2. การใช้ string interpolation
  3. การใช้ StringBuilder
  4. การใช้ string
  5. การใช้ LINQ

1.การใช้โอเปอเรเตอร์ + และ +=

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string userName = "Jack";
            string dateString = DateTime.Today.ToShortDateString();

            // Use the + and += operators for one-time concatenations.
            string str = "Hello " + userName + ". Today is " + dateString + ".";
            Console.WriteLine(str);

            str += " How are you today?";
            Console.WriteLine(str);
        }
    }
}

จะได้

Hello Jack. Today is 20/1/2562.
Hello Jack. Today is 20/1/2562. How are you today?

2. การใช้ string interpolation

How to: Concatenate Multiple Strings (C# Guide)

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string userName = "Jack";
            string date = DateTime.Today.ToShortDateString();

            // Use string interpolation to concatenate strings.
            string str = $"Hello {userName}. Today is {date}.";
            Console.WriteLine(str);

            str = $"{str} How are you today?";
            Console.WriteLine(str);
        }
    }
}

วาง $ ไว้หน้า “” และวางตัวแปรไว้ภายในวงเล็บปีกกาได้เลย

3.การใช้ StringBuilder

StringBuilder

3.1 Append() และ AppendFormat()

using System;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a StringBuilder
            StringBuilder sb = new StringBuilder();

            // Append four characters to the end of the StringBuilder.
            sb.Append(new char[] { 'A', 'B', 'C', ' ' });

            // Append strings to the end of the StringBuilder.
            sb.Append("DEF ");

            // Append a format string to the end of the StringBuilder.
            string name = "Jack";
            sb.AppendFormat("Hello {0}", name);

            // Display the number of characters in the StringBuilder and its string.
            Console.WriteLine("Length={0}  {1}", sb.Length, sb.ToString());

            // Insert a string at the beginning of the StringBuilder.
            sb.Insert(0, "Alphabet: ");
            Console.WriteLine("Length={0}  {1}", sb.Length, sb.ToString());

            // Replace all lowercase k's with uppercase K's.
            sb.Replace("Hello", "Hi");
            Console.WriteLine("Length={0}  {1}", sb.Length, sb.ToString());
        }
    }
}

จะได้

Length=18  ABC DEF Hello Jack
Length=28  Alphabet: ABC DEF Hello Jack
Length=25  Alphabet: ABC DEF Hi Jack

3.2 Append() และ AppendLine()

เมธอด Append() จะเพิ่ม string เข้ามาเฉยๆ
ส่วนเมธอด AppendLine() จะเพิ่ม string พร้อมกับขึ้นบรรทัดใหม่ให้ด้วย
แต่ถ้าจะใช้เมธอด Append แล้วขึ้นบรรทัดใหม่ ก็ต้องใส่ “\n” เอง

using System;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Hello ");
            sb.AppendLine("Jack");
            Console.WriteLine("> {0}", sb.ToString());

            sb.AppendLine("Second line");
            Console.WriteLine("> {0}", sb.ToString());

            sb.AppendLine("Third line");
            Console.WriteLine("> {0}", sb.ToString());

            sb.Append("Fourth line\n");
            Console.WriteLine("> {0}", sb.ToString());

            sb.Append("Fifth line\n");
            Console.WriteLine("> {0}", sb.ToString());
        }
    }
}

จะได้

> Hello Jack

> Hello Jack
Second line

> Hello Jack
Second line
Third line

> Hello Jack
Second line
Third line
Fourth line

> Hello Jack
Second line
Third line
Fourth line
Fifth line

4.การใช้ string

string.Concat() และ string.Join()

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

            var unreadablePhrase = string.Concat(words);
            Console.WriteLine(unreadablePhrase);

            var readablePhrase = string.Join(" ", words);
            Console.WriteLine(readablePhrase);

            var other = string.Join("-", words);
            Console.WriteLine(other);
        }
    }
}

จะได้

Thequickbrownfoxjumpsoverthelazydog.
The quick brown fox jumps over the lazy dog.
The-quick-brown-fox-jumps-over-the-lazy-dog.

string.Concat() จะเอา string มาต่อกันดื้อๆเลย
ส่วน string.Join() สามารถกำหนด string ที่จะมาคั่นระหว่างแต่ละ string ที่เอามาต่อกันได้

string.Format

String.Format Method

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            decimal pricePerOunce = 17.36m;
            string s = string.Format("The current price is {0} per ounce.", pricePerOunce);
            Console.WriteLine(s);
            // Result: The current price is 17.36 per ounce.
        }
    }
}

5.การใช้ LINQ

Language Integrated Query (LINQ)

using System;
using System.Linq;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };

            var phrase1 = words.Aggregate((partialPhrase, word) => $"{partialPhrase}{word}");
            Console.WriteLine(phrase1);

            var phrase2 = words.Aggregate((partialPhrase, word) => $"{partialPhrase} {word}");
            Console.WriteLine(phrase2);

            var phrase3 = words.Aggregate((partialPhrase, word) => $"{partialPhrase}-{word}");
            Console.WriteLine(phrase3);
        }
    }
}

จะได้ผลลัพธ์เหมือนข้างบน