Chcę usunąć wszystkie znaki specjalne z ciągu. Dozwolone znaki to AZ (wielkie lub małe), cyfry (0–9), podkreślenie (_) lub znak kropki (.).
Mam następujące, działa, ale podejrzewam (wiem!), Że to nie jest bardzo wydajne:
public static string RemoveSpecialCharacters(string str)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++)
{
if ((str[i] >= '0' && str[i] <= '9')
|| (str[i] >= 'A' && str[i] <= 'z'
|| (str[i] == '.' || str[i] == '_')))
{
sb.Append(str[i]);
}
}
return sb.ToString();
}
Jaki jest najbardziej efektywny sposób to zrobić? Jak wyglądałoby wyrażenie regularne i jak się ma do normalnej manipulacji ciągiem?
Ciągi, które będą czyszczone, będą raczej krótkie, zwykle o długości od 10 do 30 znaków.