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

เมธอด Substring() ใน C#

เมธอด String.Substring() ใน C# ใช้ดึง substring (สตริงย่อย) จากสตริงต้นทาง เริ่มจากตำแหน่งที่ระบุ จนถึงท้ายสตริง หรือความยาวที่ระบุ

ไวยากรณ์ (Syntax)

public string Substring(int startIndex);
public string Substring(int startIndex, int length);
  • startIndex — ตำแหน่งเริ่มต้น (zero-based)
  • length — จำนวนตัวอักษรที่จะดึง (ถ้าไม่ระบุ = จนถึงท้ายสตริง)
  • คืนค่า string ใหม่ (สตริงเดิมไม่เปลี่ยน)
  • โยน ArgumentOutOfRangeException หาก index/length ไม่ถูกต้อง

ตัวอย่างที่ 1: Substring แบบไม่ระบุความยาว (จนถึงท้าย)

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string str1 = "Katherine";
        string str2 = "PQRS";

        Console.WriteLine("String1 = " + str1);
        Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index 4 = " + str1.Substring(4)); // "erine"

        Console.WriteLine("\nString2 = " + str2);
        Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index 2 = " + str2.Substring(2)); // "RS"
    }
}

ผลลัพธ์

String1 = Katherine
String1 ToUpperInvariant = KATHERINE
String1 Substring from index 4 = erine
String2 = PQRS
String2 ToLowerInvariant = pqrs
String2 Substring from index 2 = RS

ตัวอย่างที่ 2: Substring ระบุความยาว

using System;

public class Demo
{
    public static void Main(string[] args)
    {
        string str1 = "Notebook";
        string str2 = "Ultrabook";

        Console.WriteLine("String1 = " + str1);
        Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());
        Console.WriteLine("String1 Substring from index 4, length 4 = " + str1.Substring(4, 4)); // "book"

        Console.WriteLine("\nString2 = " + str2);
        Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
        Console.WriteLine("String2 Substring from index 0, length 5 = " + str2.Substring(0, 5)); // "Ultra"
    }
}

ผลลัพธ์

String1 = Notebook
String1 ToUpperInvariant = NOTEBOOK
String1 Substring from index 4, length 4 = book
String2 = Ultrabook
String2 ToLowerInvariant = ultrabook
String2 Substring from index 0, length 5 = Ultra

สรุป

  • Substring(startIndex) — ดึงจาก startIndex จนถึงท้าย
  • Substring(startIndex, length) — ดึงจาก startIndex ยาว length ตัวอักษร
  • สตริงใน C# เป็น immutable — Substring คืนสตริงใหม่ ไม่เปลี่ยนต้นทาง
  • Index เริ่มจาก 0 — ตัวแรกคือ index 0
  • ใน .NET Core 2.1+ / .NET 5+ ควรใช้ AsSpan() แทนสำหรับ performance — ไม่ allocate string ใหม่:
    ReadOnlySpan<char> span = str.AsSpan(4, 4); // "book" - zero allocation

กรณีผิดพลาดที่พบบ่อย

string s = "abc";
// s.Substring(3) -> "" (empty string) - OK
// s.Substring(4) -> ArgumentOutOfRangeException
// s.Substring(0, 4) -> ArgumentOutOfRangeException (length > remaining)

// ป้องกัน:
if (startIndex >= 0 && startIndex < s.Length)
{
    int len = Math.Min(length, s.Length - startIndex);
    var sub = s.Substring(startIndex, len);
}

ตัวอย่างใช้งานจริง: ดึงนามสกุลไฟล์

string filename = "document.pdf";
int dotIndex = filename.LastIndexOf('.');
string extension = (dotIndex >= 0) ? filename.Substring(dotIndex + 1) : "";
Console.WriteLine(extension); // "pdf"