ภาพรวม
การแบ่งสตริง (String Splitting) ใน C# ใช้เมธอด String.Split() ซึ่งแยกสตริงเป็นอาร์เรย์ของสตริงย่อย ตาม Delimiter (ตัวคั่น) ที่ระบุ Delimiter สามารถเป็น Char, String, หรือ Char Array
ตัวอย่างพื้นฐาน: คั่นด้วย Comma
using System;
class Program
{
static void Main()
{
string str = "Welcome,to,New York";
// กำหนด Delimiter เป็น Char Array
char[] delimiter = new char[] { ',' };
// แบ่งสตริง
string[] parts = str.Split(delimiter, StringSplitOptions.None);
foreach (string part in parts)
Console.WriteLine(part);
}
}ผลลัพธ์
Welcome to New York
StringSplitOptions
| Option | คำอธิบาย |
|---|---|
None | รวม Empty Strings (ถ้ามี Delimiter ติดกัน) |
RemoveEmptyEntries | ตัด Empty Strings ออก |
TrimEntries | .NET 5+ : Trim Whitespace ทุก Entry |
ตัวอย่าง StringSplitOptions
string str = "A,,B,C,,";
var none = str.Split(',', StringSplitOptions.None);
// ["A", "", "B", "C", "", ""]
var removeEmpty = str.Split(',', StringSplitOptions.RemoveEmptyEntries);
// ["A", "B", "C"]
var trim = " A , B , C ".Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
// ["A", "B", "C"]การแบ่งด้วย String Delimiter (หลายตัวอักษร)
string str = "One::Two::Three";
string[] parts = str.Split(new string[] { "::" }, StringSplitOptions.None);
// ["One", "Two", "Three"]การจำกัดจำนวนผลลัพธ์ (Max Substrings)
string str = "A,B,C,D,E";
// แบ่งได้สูงสุด 3 ส่วน (2 Delimiters แรก)
string[] parts = str.Split(',', 3, StringSplitOptions.None);
// ["A", "B", "C,D,E"]Best Practices
- ใช้
StringSplitOptions.RemoveEmptyEntriesเพื่อหลีกเลี่ยง Empty Strings - ใช้
TrimEntries(.NET 5+) สำหรับข้อมูลจาก User Input - Delimiter หลายตัว:
str.Split(new[] { ',', ';', '|' }, ...) - Regex.Split() สำหรับ Pattern ซับซ้อน (ดูบทความถัดไป)
- Span-based:
str.AsSpan().Split(...)(.NET Core 2.1+) - ไม่ Allocate Array