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

Chương trình C# kiểm tra chuỗi con (Substring) có tồn tại trong chuỗi

Sử dụng phương thức String.Contains() để kiểm tra chuỗi con có xuất hiện trong chuỗi gốc hay không. Trả về true/false.

Mã nguồn


using System;

public class Demo {
    public static void Main() {
        string str1 = "United";
        string str2 = "Uni";
        
        bool result = str1.Contains(str2);
        
        if (result) {
            Console.WriteLine($"Chuỗi con \"{str2}\" CÓ trong \"{str1}\"");
        } else {
            Console.WriteLine($"Chuỗi con \"{str2}\" KHÔNG có trong \"{str1}\"");
        }
    }
}

Kết quả


Chuỗi con "Uni" CÓ trong "United"

Các overload hữu ích (.NET Core 2.0+ / .NET Standard 2.1+)


// Không phân biệt chữ hoa/thường
bool result = str1.Contains(str2, StringComparison.OrdinalIgnoreCase);

// So sánh theo culture cụ thể
bool result = str1.Contains(str2, StringComparison.CurrentCultureIgnoreCase);

Tìm vị trí (Index)


int index = str1.IndexOf(str2);           // Vị trí đầu tiên, -1 nếu không thấy
int lastIndex = str1.LastIndexOf(str2);   // Vị trí cuối cùng

// Tìm tất cả vị trí
var indices = new List();
int idx = 0;
while ((idx = str1.IndexOf(str2, idx)) != -1) {
    indices.Add(idx);
    idx += str2.Length; // Nhảy qua chuỗi con vừa tìm
}

Regex (pattern phức tạp)


using System.Text.RegularExpressions;

// Tìm từ hoàn chỉnh (word boundary)
bool found = Regex.IsMatch(str1, $@"\b{Regex.Escape(str2)}\b", RegexOptions.IgnoreCase);

Lưu ý

  • Contains phân biệt chữ hoa/thường mặc định — dùng overload StringComparison để ignore case.
  • IndexOf trả về -1 nếu không tìm thấy.
  • Để tìm từ hoàn chỉnh (không khớp một phần từ), dùng Regex \b hoặc tách từ rồi so sánh.
  • Hiệu năng: Contains / IndexOf được tối ưu hóa nội bộ (Boyer-Moore/horspool) — rất nhanh.