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 ý
Containsphân biệt chữ hoa/thường mặc định — dùng overloadStringComparisonđể ignore case.IndexOftrả về-1nế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
\bhoặ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.