เมธอด String.Join() ใน C# ใช้สำหรับต่อ (concatenate) สมาชิกทั้งหมดของอาเรย์สตริงเข้าด้วยกัน โดยใช้ตัวคั่น (separator) ที่ระบุระหว่างแต่ละสมาชิก
ไวยากรณ์ (Syntax)
public static string Join(string separator, string[] value);
- separator — สตริงตัวคั่นที่จะวางระหว่างสมาชิก
- value — อาเรย์สตริงที่ต้องการต่อกัน
มี overload อื่นๆ เช่น Join(string, IEnumerable<string>), Join(char, string[]), Join<T>(string, IEnumerable<T>) (แปลง T เป็น string อัตโนมัติ)
ตัวอย่างที่ 1: ต่ออาเรย์สตริงด้วยเครื่องหมาย "/"
using System;
public class Demo
{
public static void Main(string[] args)
{
string[] strArr = { "One", "Two", "Three", "Four" };
Console.WriteLine("String Array...");
foreach (string s in strArr)
{
Console.WriteLine(s);
}
string str = string.Join("/", strArr);
Console.WriteLine("Result (after joining) = " + str);
}
}
ผลลัพธ์
String Array... One Two Three Four Result (after joining) = One/Two/Three/Four
ตัวอย่างที่ 2: ต่ออาเรย์สตริงด้วยเครื่องหมาย "*"
using System;
public class Demo
{
public static void Main(string[] args)
{
string[] strArr = { "AB", "BC", "CD", "DE", "EF", "FG", "GH", "IJ" };
Console.WriteLine("String Array...");
foreach (string s in strArr)
{
Console.WriteLine(s);
}
string str = string.Join("*", strArr);
Console.WriteLine("Result (after joining) = " + str);
}
}
ผลลัพธ์
String Array... AB BC CD DE EF FG GH IJ Result (after joining) = AB*BC*CD*DE*EF*FG*GH*IJ
ตัวอย่างเพิ่มเติม: Join กับ IEnumerable และชนิดข้อมูลอื่น
using System;
using System.Collections.Generic;
using System.Linq;
public class Demo
{
public static void Main()
{
// กับ List
var list = new List<int> { 1, 2, 3, 4, 5 };
Console.WriteLine(string.Join(", ", list)); // 1, 2, 3, 4, 5
// กับ LINQ
var words = new[] { "apple", "banana", "cherry" };
Console.WriteLine(string.Join(" | ", words.Where(w => w.Length > 5))); // banana | cherry
// Separator เป็น string ว่าง — ต่อติดกันโดยไม่มีตัวคั่น
Console.WriteLine(string.Join("", new[] { "A", "B", "C" })); // ABC
// null separator = string.Empty
Console.WriteLine(string.Join(null, new[] { "X", "Y" })); // XY
}
}
สรุป
String.Join()เป็นวิธีมาตรฐานและมีประสิทธิภาพสำหรับต่อสตริงหลายตัวพร้อมตัวคั่น- จัดการ null ในอาเรย์ได้ (ถือเป็น string.Empty)
- มี overload รองรับ
IEnumerable<T>และ genericJoin<T>()— ใช้กับ List, array, LINQ ได้เลย - ประสิทธิภาพดีกว่าการใช้
+หรือStringBuilderในลูปสำหรับกรณีง่ายๆ - ตัวคั่น (separator) สามารถเป็น string ความยาวเท่าไรก็ได้ รวมถึง string ว่าง