ความแตกต่างระหว่าง TrimStart() และ TrimEnd() ใน C#
ทั้งสองเป็นเมธอดของ string ใช้ลบอักขระที่ไม่ต้องการ แต่ตำแหน่งที่ลบต่างกัน
TrimStart() - ลบหน้าสตริง (Leading)
ลบอักขระนำหน้า (leading characters) ที่ระบุในอาร์เรย์
using System;
class Program
{
static void Main()
{
// ลบศูนย์นำหน้า
string str = "0009678".TrimStart(new char[] { '0' });
Console.WriteLine(str); // 9678
// ลบช่องว่างนำหน้า (default behavior)
string str2 = " Hello".TrimStart();
Console.WriteLine($"'{str2}'"); // 'Hello'
// ลบหลายตัวอักษร
string str3 = "abcHello".TrimStart('a', 'b', 'c');
Console.WriteLine(str3); // Hello
}
}
TrimEnd() - ลบท้ายสตริง (Trailing)
ลบอักขระท้าย (trailing characters) ที่ระบุในอาร์เรย์
using System;
class Program
{
static void Main()
{
// ลบเลข 1 ท้าย
string str = "7341111".TrimEnd(new char[] { '1' });
Console.WriteLine(str); // 734
// ลบช่องว่างท้าย (default)
string str2 = "Hello ".TrimEnd();
Console.WriteLine($"'{str2}'"); // 'Hello'
// ลบหลายตัวอักษร
string str3 = "Helloxyz".TrimEnd('x', 'y', 'z');
Console.WriteLine(str3); // Hello
}
}
Trim() - ลบทั้งหน้าและท้าย
string s = " Hello World ";
Console.WriteLine($"'{s.Trim()}'"); // 'Hello World'
Console.WriteLine($"'{s.TrimStart()}'"); // 'Hello World '
Console.WriteLine($"'{s.TrimEnd()}'"); // ' Hello World'
ตารางเปรียบเทียบ
| เมธอด | ลบที่ | พารามิเตอร์ | ค่า Default |
|---|---|---|---|
TrimStart() | หน้า (Left) | params char[] | Whitespace (space, tab, newline) |
TrimEnd() | ท้าย (Right) | params char[] | Whitespace |
Trim() | ทั้งสองข้าง | params char[] | Whitespace |
ตัวอย่างขั้นสูง
// ลบอักขระพิเศษหน้า/ท้าย
string filename = "***report_final_v2***.pdf";
string clean = filename.Trim('*', '.', ' '); // "report_final_v2"
// TrimStart/TrimEnd กับ string (C# 11+ - .NET 7+)
string s = "abcHelloabc";
Console.WriteLine(s.TrimStart("abc")); // "Helloabc"
Console.WriteLine(s.TrimEnd("abc")); // "abcHello"
// Custom Trim: ลบคำเฉพาะ
string text = "Note: Important message";
string cleaned = text.TrimStart("Note: ".ToCharArray()); // "Important message"
กรณีใช้งานทั่วไป
- TrimStart: ลบ prefix, indentation, leading zeros, BOM characters
- TrimEnd: ลบ suffix, trailing spaces, newline, file extensions
- Trim: ทำความสะอาด input จากผู้ใช้, parsing, normalization
ประสิทธิภาพ
- สร้างสตริงใหม่ (strings are immutable)
- O(n) โดย n = ความยาวสตริง
- สำหรับ high-performance ใช้
Span<char>และMemoryExtensions.Trim