Đây là những gì tôi có thể làm;
// Lowered bad words array
string[] badWordArray = { "abadword1", "abadword2", "abadword3" };
bool isBadWord = false;
if (!string.IsNullOrEmpty(name))
{
name = name.ToLower();
isBadWord = badWordArray.Any(badWord => name.Contains(badWord));
}
Tôi cũng đã thử nghiệm các câu trả lời khác nữa;
459 ms:
.Any(badWord => string.Equals(name, badWord, StringComparison.CurrentCultureIgnoreCase));
1464 ms:
.Any(badWord => name.IndexOf(badWord, StringComparison.CurrentCultureIgnoreCase) >= 0);
247 ms:
.Any(badWord => name.Contains(badWord));
Đây là của tôi đơn giản (& ngu ngốc đang) kiểm tra:
var name = "tuckyou";
// Lowered bad words array
string[] badWordArray = { "abadword1", "abadword2", "abadword3" };
Stopwatch stopwatch = new Stopwatch();
int oneMillion = 1000000;
bool isBadWord = false;
stopwatch.Start();
for (int i = 0; i < oneMillion; i++)
{
isBadWord = badWordArray.Any(badWord => string.Equals(name, badWord, StringComparison.CurrentCultureIgnoreCase));
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
stopwatch.Reset();
stopwatch.Start();
for (int i = 0; i < oneMillion; i++)
{
isBadWord = badWordArray.Any(badWord => name.IndexOf(badWord, StringComparison.CurrentCultureIgnoreCase) >= 0);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
stopwatch.Reset();
stopwatch.Start();
if (!string.IsNullOrEmpty(name))
{
name = name.ToLower();
}
for (int i = 0; i < oneMillion; i++)
{
isBadWord = badWordArray.Any(badWord => name.Contains(badWord));
}
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedMilliseconds);
Console.ReadLine();
Ofcourse, sử dụng đồng hồ bấm giờ là không chính xác. Nhưng nó đưa ra một ý tưởng.
Nguồn
2016-03-28 13:11:33
'ProperNameMethod' –
@Reza Taibur vui lòng đánh dấu câu trả lời của tôi là được chấp nhận nếu nó giúp bạn. –
Tôi đã thực hiện một phương pháp có thể chuyển đổi từ đầu tiên của chuỗi thành một chữ Block. @ Un-lucky –