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:
Postar um comentário