segunda-feira, 21 de maio de 2007

Capitalizar Palavras em C#/CSharp

Não encontrei uma forma eficiente no framework .net pra fazer as palavras de um nome próprio automaticamente iniciarem por letras maiúsculas, então me sugeriram o método CapitalizeWords para isso, encontrei também uma alternativa no framework, que não é muito eficiente em alguns casos, mas está exibida abaixo também.

Na web, encontrei em http://channel9.msdn.com/ShowPost.aspx?PostID=287612 (in English), post com bastante debate sobre esses métodos de capitalizar palavras.

Abaixo seguem duas formas de tornar maiúscula a inicial de palavras, antes das funções algumas considerações:

A Primeira forma, para textos muito extensos pode ter problemas de performance.

A Segunda forma teria um problema com fórmulas matemáticas com o seguinte exemplo:
2x + 3x = y fica 2X + 3X = Y

Mas para nomes próprios parece que ambas servem.

----

// Primeira forma

public
static string CapitalizeWords(string value)
{
if( value == null )
throw new ArgumentNullException("value");
if( value.Length == 0 )
return value;

StringBuilder
result = new StringBuilder(value);
result[0] =
char.ToUpper(result[0]);
for( int i = 1; i < result.Length; ++i )
{
if( char.IsWhiteSpace(result[i - 1]) )
result[i] =
char.ToUpper(result[i]);
}
return result.ToString();
}

----

// Segunda forma
public static string Capitalize (string value)
{
return System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase (value);
}

0 comentários: