Tôi cần kiểm tra xem chuỗi có chứa bất kỳ từ nào không.C# - Cách nhanh nhất để tìm một tập hợp các chuỗi trong một chuỗi khác
Tiếp theo một số lời khuyên từ một câu hỏi ở đây, tôi đã thực hiện một HashSet chứa dòng chữ:
HashSet<string> swearWords = new HashSet<string>() { "word_one", "word_two", "etc" };
Bây giờ tôi cần phải xem nếu bất kỳ giá trị chứa trong swearWords
là trong chuỗi của tôi.
Tôi đã nhìn thấy nó được thực hiện theo chiều ngược lại, ví dụ:
swearWords.Contains(myString)
Nhưng điều này sẽ trả về false.
Cách nhanh nhất để kiểm tra xem có bất kỳ từ nào trong HashSet nằm trong số myString
không?
NB: Tôi hình tôi có thể sử dụng vòng lặp foreach để kiểm tra từng từ, và ngắt nếu tìm thấy kết quả phù hợp, tôi chỉ tự hỏi có cách nào nhanh hơn không.
Tại sao các bạn sử dụng một 'HashSet'? Có thể dễ dàng hơn để sử dụng 'Danh sách 'tại đây. Và sau đó chia 'myString' thành danh sách và thực hiện so sánh cần thiết. –
SkonJeet
@SkonJeet: nếu danh sách các từ chửi thề lớn, việc kiểm tra ngăn chặn sẽ nhanh hơn cho một 'HashSet' hơn là' Danh sách' - và tôi không thể thấy rằng một 'Danh sách' sẽ làm cho nó dễ dàng hơn *. –
Ban đầu tôi đã sử dụng một danh sách và sau đó chuyển đổi nó thành một HashSet khi tôi đọc chúng nhanh hơn để kiểm tra các giá trị trong – surfitscrollit