Kiểm tra chuỗi chứa từ/substring: Contains (exact), IndexOf (vị trí), Regex (pattern), StartsWith/EndsWith.
Ví dụ minh họa
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string s = "Together we can do so much!";
// 1. Contains - exact substring
Console.WriteLine($"Contains('much'): {s.Contains("much")}"); // True
Console.WriteLine($"Contains('Much'): {s.Contains("Much")}"); // False (case-sensitive)
// 2. IndexOf - vị trí
int idx = s.IndexOf("much");
Console.WriteLine($"IndexOf('much'): {idx}"); // 22
Console.WriteLine($"IndexOf('Much', StringComparison.OrdinalIgnoreCase): {s.IndexOf("Much", StringComparison.OrdinalIgnoreCase)}");
// 3. StartsWith / EndsWith
Console.WriteLine($"StartsWith('Together'): {s.StartsWith("Together")}"); // True
Console.WriteLine($"EndsWith('much!'): {s.EndsWith("much!")}"); // True
// 4. Regex - pattern matching
bool hasWordMuch = Regex.IsMatch(s, @"\bmuch\b"); // Word boundary
Console.WriteLine($"Regex whole word 'much': {hasWordMuch}"); // True
bool hasWordDo = Regex.IsMatch(s, @"\bdo\b");
Console.WriteLine($"Regex whole word 'do': {hasWordDo}"); // True
// 5. Case-insensitive Contains (.NET Core 2.0+ / .NET 5+)
Console.WriteLine($"\nCase-insensitive:");
Console.WriteLine($"Contains('MUCH', IgnoreCase): {s.Contains("MUCH", StringComparison.OrdinalIgnoreCase)}");
}
}
Kết quả đầu ra
Contains('much'): True
Contains('Much'): False
IndexOf('much'): 22
IndexOf('Much', StringComparison.OrdinalIgnoreCase): 22
StartsWith('Together'): True
EndsWith('much!'): True
Regex whole word 'much': True
Regex whole word 'do': True
Case-insensitive:
Contains('MUCH', IgnoreCase): True
Lưu ý: Contains mặc định case-sensitive. Dùng StringComparison.OrdinalIgnoreCase cho case-insensitive. Regex.IsMatch với \b tìm từ nguyên vẹn (không khớp "much" trong "muchmore").