Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด String.Join() ใน C#

เมธอด String.Join() ใน C#

String.Join() ใช้รวมองค์ประกอบในอาร์เรย์หรือคอลเลกชันสตริงเข้าด้วยกัน โดยใส่ตัวคั่น (separator) ระหว่างแต่ละองค์ประกอบ อยู่ใน namespace System

Syntax


// พื้นฐาน
public static string Join(string separator, string[] values);

// Generic (รองรับ IEnumerable)
public static string Join(string separator, IEnumerable values);

// ระบุช่วง (Subarray)
public static string Join(string separator, string[] value, int startIndex, int count);

ตัวอย่างพื้นฐาน


using System;

namespace StringApplication
{
    class StringProg
    {
        static void Main(string[] args)
        {
            string[] starray = new string[]
            {
                "Down the way nights are dark",
                "And the sun shines daily on the mountaintop",
                "I took a trip on a sailing ship",
                "And when I reached Jamaica",
                "I made a stop"
            };

            // รวมด้วย newline
            string str = String.Join("\n", starray);
            Console.WriteLine(str);
        }
    }
}

ผลลัพธ์


Down the way nights are dark
And the sun shines daily on the mountaintop
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop

ตัวอย่างเพิ่มเติม

1. รวมด้วยคอมมาและช่องว่าง


string[] fruits = { "Apple", "Banana", "Orange", "Mango" };
string csv = String.Join(", ", fruits);
Console.WriteLine(csv); // Apple, Banana, Orange, Mango

2. รวม List<T> และ IEnumerable


var numbers = new List { 1, 2, 3, 4, 5 };
string joined = String.Join(" - ", numbers); // "1 - 2 - 3 - 4 - 5"

// LINQ + Join
var evenJoined = String.Join(", ", numbers.Where(n => n % 2 == 0)); // "2, 4"

3. รวม Object ด้วย ToString()


class Person { public string Name; public int Age; }

var people = new List
{
    new Person { Name = "Alice", Age = 25 },
    new Person { Name = "Bob", Age = 30 }
};

string names = String.Join(", ", people.Select(p => p.Name)); // "Alice, Bob"

4. ใช้กับ StringBuilder (ประสิทธิภาพดีกว่าสำหรับข้อมูลเยอะ)


var sb = new System.Text.StringBuilder();
string[] largeArray = new string[10000];
// ... fill array
string result = String.Join(",", largeArray); // OK แต่ StringBuilder.Join เร็วกว่าในบางกรณี

String.Join vs String.Concat vs +

วิธีใช้เมื่อประสิทธิภาพ
String.Joinมีตัวคั่น, รวมหลายค่าดี (allocate ครั้งเดียว)
String.Concatต่อติดกันโดยไม่มีตัวคั่นดี
+ หรือ +=ต่อสตริงน้อย (ไม่เกิน 5-10)ช้า (สร้างสตริงใหม่ทุกครั้ง)
StringBuilderต่อสตริงเยอะ/ในลูปดีที่สุด

Path.Join (สำหรับ File Path)


using System.IO;

string path = Path.Join("C:", "Users", "Documents", "file.txt");
// Windows: C:\Users\Documents\file.txt
// Linux:   C:/Users/Documents/file.txt