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).