Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tìm substring trong chuỗi C#

Tìm substring: Contains (bool), IndexOf (vị trí), LastIndexOf (vị trí cuối), Regex (pattern).

Ví dụ minh họa

using System;

class Program
{
    static void Main()
    {
        string s = "Tom Cruise";
        string sub = "Tom";
        
        Console.WriteLine($"Chuỗi: \"{s}\"");
        Console.WriteLine($"Tìm: \"{sub}\"");
        
        // 1. Contains - bool
        bool found = s.Contains(sub);
        Console.WriteLine($"Contains: {found}");
        
        // 2. IndexOf - vị trí đầu tiên (-1 nếu không tìm thấy)
        int index = s.IndexOf(sub);
        Console.WriteLine($"IndexOf: {index}"); // 0
        
        // 3. LastIndexOf - vị trí cuối cùng
        string s2 = "Tom and Tom";
        Console.WriteLine($"\nChuỗi: \"{s2}\"");
        Console.WriteLine($"IndexOf('Tom'): {s2.IndexOf("Tom")}");     // 0
        Console.WriteLine($"LastIndexOf('Tom'): {s2.LastIndexOf("Tom")}"); // 8
        
        // 4. Case-insensitive
        Console.WriteLine($"\nCase-insensitive:");
        Console.WriteLine($"IndexOf('TOM', IgnoreCase): {s.IndexOf("TOM", StringComparison.OrdinalIgnoreCase)}");
        
        // 5. Count occurrences
        int count = 0;
        int start = 0;
        while ((start = s2.IndexOf(sub, start)) != -1)
        {
            count++;
            start += sub.Length;
        }
        Console.WriteLine($"Số lần xuất hiện 'Tom': {count}");
    }
}

Kết quả đầu ra

Chuỗi: "Tom Cruise"
Tìm: "Tom"
Contains: True
IndexOf: 0

Chuỗi: "Tom and Tom"
IndexOf('Tom'): 0
LastIndexOf('Tom'): 8

Case-insensitive:
IndexOf('TOM', IgnoreCase): 0

Số lần xuất hiện 'Tom': 2

Lưu ý: Contains trong .NET Framework cũ không hỗ trợ StringComparison. .NET Core 2.0+ / .NET 5+ đã hỗ trợ: s.Contains(sub, StringComparison.OrdinalIgnoreCase).