這是我可以做的;
// 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));
}
我也測試了其他答案;
459毫秒:
.Any(badWord => string.Equals(name, badWord, StringComparison.CurrentCultureIgnoreCase));
1464毫秒:
.Any(badWord => name.IndexOf(badWord, StringComparison.CurrentCultureIgnoreCase) >= 0);
247毫秒:
.Any(badWord => name.Contains(badWord));
這裏是我的簡單(&笨)測試代碼:
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,使用秒錶是不準確的。但它提供了一個想法。
什麼是'ProperNameMethod' –
@Reza Taibur請標記我的答案爲接受,如果它可以幫助你。 –
我做了一個方法,將字符串的第一個單詞轉換爲一個Block信件。@ un-lucky –