Olá pessoal,
Este é um assunto que todo mundo ja se perguntou, entretanto vou deixar minha marca também e pode ser útil.
A remoção de acentos(ou o processo de retirar a acentuação) pode ser feita de várias formas, com replace(substituição de caracteres com acentos por sem acentos), ou com o auxilio da System.Globalization.
Segundo a MSDN, a System.Globalization namespace contém classes que definem informações relacionadas à cultura, incluindo idioma, país/região, os calendários em uso, os padrões de formatação para datas, moeda e números e a classificação do pedido para seqüências de caracteres.Essas classes são úteis para escrever aplicativos (internacionalizados) globalizados.Classes como StringInfo e TextInfo fornecem funcionalidades de globalização avançados, incluindo substituto suporte e texto elemento processamento.
Particularmente acho bem mais elegante a utilização da System.Globalization para este tipo de tarefa, ambas funcionam, porém irei demonstrar como remover strings utilizando a System.Globalization, por sem mais elegante, farei isso usando extension methods, em breve farei uma postagem tratando apenas deste assunto.
Vamos para a ação! Ao final da postagem deixarei o link para o donwload da classe Useful.
Você pode criar uma classe chamada Useful como a seguir, repare que utilizo apenas a System.Globalization e o System.Text:
- using System.Globalization;
- using System.Text;
-
- namespace NinjaCode
- {
- public static class Useful
- {
- public static string RemoveAccents(this string text)
- {
- StringBuilder sbReturn = new StringBuilder();
- var arrayText = text.Normalize(NormalizationForm.FormD).ToCharArray();
-
- foreach (char letter in arrayText)
- {
- if (CharUnicodeInfo.GetUnicodeCategory(letter) != UnicodeCategory.NonSpacingMark)
- sbReturn.Append(letter);
- }
- return sbReturn.ToString();
- }
- }
- }
using System.Globalization;
using System.Text;
namespace NinjaCode
{
public static class Useful
{
public static string RemoveAccents(this string text)
{
StringBuilder sbReturn = new StringBuilder();
var arrayText = text.Normalize(NormalizationForm.FormD).ToCharArray();
foreach (char letter in arrayText)
{
if (CharUnicodeInfo.GetUnicodeCategory(letter) != UnicodeCategory.NonSpacingMark)
sbReturn.Append(letter);
}
return sbReturn.ToString();
}
}
}
Agora para você fazer uso desta classe em seu projeto basta fazer o seguinte:
Agora basta usar assim por exemplo:
- string testAccent = "Ninja Code removendo acentuação de minhas strings... é show!";
- string test = test.RemoveAccents();
-
- string test1 = "Removendo acentuação com a ajuda do Ninja Code! Até a próxima.".RemoveAccents();
string testAccent = "Ninja Code removendo acentuação de minhas strings... é show!";
string test = test.RemoveAccents();
string test1 = "Removendo acentuação com a ajuda do Ninja Code! Até a próxima.".RemoveAccents();
Se você quiser saber mais sobre:
Extension Methods – Clique aqui.
System.Globalization – Clique aqui.
Para fazer o download da classe Useful – Useful.cs (628.00 bytes).
Simplificando e desmitificando.
Até a próxima.
E se o meu povo, que se chama pelo meu nome, se humilhar, e orar, e buscar a minha face e se converter dos seus maus caminhos, então eu ouvirei dos céus, e perdoarei os seus pecados, e sararei a sua terra. (II Crônicas 7:14)
Tags: c#, csharp, System.Globalization, extension methods, System.Text, Visual Studio, Visual Studio 2010, strins