Remover acentos de String – Asp.NET C#

Postado em 29. ago, 2011 por em Tudo sobre Tecnologia

Quando pensei em remover acentos de uma string, a primeira coisa que veio na cabeça foi “Vou fazer um Replace(), ele será lindo e funcionará perfeitamente”. Não demorou muito para mudar de idéia e buscar algo mais simples e que ou não me daria problemas com manutenção, ou melhor, que não desse manutenção alguma, pois só de pensar na quantidade de código que teria que digitar, ja me dava frio na espinha e na performance do mesmo, ja me dava frio na espinha. Bom, pesquisando por ai, encontrei a maneira mais aconselhável de ser fazer isso, utilizar o 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.

Entendimento à parte vamos a prática:

No exemplo abaixo, temos o textBox “txtString”, onde será digitado o texto de entrada, o botão “btnRemoveAcento” que será responsável por disparar o evento que por sua vez retornará a string imputada no Label “lblRetornoString”.

Formulário ASP:

<asp:Label ID="lblRemoveAcentos" runat="server" Text="Remover Acentos:"></asp:Label>
<br />
<asp:TextBox ID="txtString" runat="server"></asp:TextBox>
<asp:Button ID="btnRemoveAcento" runat="server" Text="Remove Acento" OnClick="btnRemoveAcento_Click" />
<br />
<asp:Label ID="lblRetornoString" runat="server" Text="aguardando..."></asp:Label>

Abaixo temos o behind da página, onde trataremos o evento do botão e o método RemoveAcentos().

//Evento do botão:
protected void btnRemoveAcento_Click(object sender, EventArgs e)
{
	string test = txtString.Text;

	lblRetornoString.Text = RemoveAcentos(test);
}

//Método RemoveAcentos():
public string RemoveAcentos(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();
}

Para testar, informe por exemplo o seguinte conteúdo no textBox e clique no botão: çãâáàóòíì
Logo abaixo será impresso o retorno: caaaaooii

Se alguém conhecer alguma outra maneira, fiquem a vontade.

Fonte: http://www.ninjacode.com.br/post/2011/08/10/Retirar-acentos-de-strings-C.aspx
Mais informações em: http://msdn.microsoft.com/pt-br/library/system.globalization.aspx

Tags: , , ,

Um Comentário

Raguel Balcitis

25. set, 2012

This was the type of information that i was looking for. P.s: i have also bookmarked this website . Thank you

Deixe um comentário

You must be logged in to post a comment.