Я хочу заменить некоторые недопустимые символы в имени файла, загруженного в мое приложение.Алгоритм низкой сложности для удаления/замены специальных символов
Я искал к чему-то в Интернете и нашел некоторые сложные алгоритмы, чтобы сделать это, вот один:
public static string RemoverAcentuacao(string palavra)
{
string palavraSemAcento = null;
string caracterComAcento = "áàãâäéèêëíìîïóòõôöúùûüçáàãâÄéèêëíìîïóòõÖôúùûÜç, ?&:/!;ºª%‘’()\"”“";
string caracterSemAcento = "aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC___________________";
if (!String.IsNullOrEmpty(palavra))
{
for (int i = 0; i < palavra.Length; i++)
{
if (caracterComAcento.IndexOf(Convert.ToChar(palavra.Substring(i, 1))) >= 0)
{
int car = caracterComAcento.IndexOf(Convert.ToChar(palavra.Substring(i, 1)));
palavraSemAcento += caracterSemAcento.Substring(car, 1);
}
else
{
palavraSemAcento += palavra.Substring(i, 1);
}
}
string[] cEspeciais = { "#39", "---", "--", "'", "#", "\r\n", "\n", "\r" };
for (int q = 0; q < cEspeciais.Length; q++)
{
palavraSemAcento = palavraSemAcento.Replace(cEspeciais[q], "-");
}
for (int x = (cEspeciais.Length - 1); x > -1; x--)
{
palavraSemAcento = palavraSemAcento.Replace(cEspeciais[x], "-");
}
palavraSemAcento = palavraSemAcento.Replace("+", "-").Replace(Environment.NewLine, "").TrimStart('-').TrimEnd('-').Replace("<i>", "-").Replace("<-i>", "-").Replace("<br>", "").Replace("--", "-");
}
else
{
palavraSemAcento = "indefinido";
}
return palavraSemAcento.ToLower();
}
Там есть способ сделать это с менее сложным алгоритмом?
Я думаю, что этот алгоритм очень сложный для чего-то не слишком сложного, но я не могу думать ни о чем другом.
Если это сработает, почему вам все равно, насколько он сложный? – JJJ
Вы можете попытаться использовать скомпилированные выражения regurlar – alex
, что код делает больше, чем просто удаление всех экземпляров символов с помощью набора char list ... если вы * нуждаетесь в этой более сложной логике, то в этом вопросе гораздо меньше выбора. Если вам нужно удалить все экземпляры определенных символов, это намного проще, чем этот код. – Servy