Expressoes regulares sao bem uteis e muitos programadores .NET acabam ignorando-as por serem heranca do mundo Unix.Porem, quando se da a elas a devida atencao, vantagens sao descobertas e codigos que levariam n+1 linhas para fazer validacao de entrada, acabam por se apresentarem em apenas uma linha. Veja o exemplo de um metodo que valida telefones:static bool IsPhone(string s){ return Regex.IsMatch(s, @"^\(?\d{3}\)?[\s\-]?\d{3}\-?\d{4}$");}Mas o que raios e esse monte de treco entre as aspas?Eu explico:^ Representa o inicio da string. Quando voce usa este simbolo, significa que voce esta trabalhando a string desde seu inicio.\(? Um parenteses opcional. Para validar parenteses, e necessario usar com escape \ e para tornar o simbolo opcional, usa-se ?\d{3} Tres digitos numericos. \d significa digito e o numero entre chaves identifica a quantidade que se esta buscando.\)? Fechamento de parenteses opcional. Novamente um parenteses, dessa vez fechando mas tambem e opcional gracas ao ?[\s\-]? Ou um ou outro. Nesse caso, estamos buscando OU um espaco vazio por \s OU um hifem por \- . Devido a estarem entre colchetes, nunca serao encontrados ao mesmo tempo. E seja la qual for que encontremos, e opcional de qualquer maneira.\d{3} Tres digitos. Isso eu ja expliquei :D\-? Um hifem. Apenas um hifem. Mas e opcional, se nao tiver, tudo bem.\d{4} Adivinha?$ Final da string. Este simbolo indica o final da string. Como usamos ^ no comeco e $ no final, estamos testando a string inteira. using System;using System.Text;using Mundo; namespace Funk{ public class SouFoda : IFunk { // Dig-din, dig-din, di-din this.Foda = true; public SouFoda() { Console.WriteLine(Foda.toString()); } if(NaCama || NaSala || NoQuarto || NoBeco || NoCarro) this.Esculachar(vc); this.Sinistro = true; seuMarido.Qualidade = this.Qualidade * -1 this.Esculachar(seuAmigo); while(NaCama) this.Perigoso = true; // Avassalador this.Interessante = true; this.Esculachar(seuAmante); this.Esculachar(seuFicante); Console.WriteLine("Nao se esqueca"); this.Vagabundo = true; Mundo.Putaria(); #region [ REFRAO ] for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) this.Enlouquecer(vc); foreach(Mulher m in queProvaram) m.Esquecer = false; } #endregion }} Camel Case e quando as palavras iniciam com maiuscula e tem as outras letras minusculas.Muitas vezes tratamos isso ao entrar ou sair do campo, mas pode-se tambem tratar enquanto se digita no campo, em tempo real.Veja como se faz:private void txt_KeyPress(object sender, KeyPressEventArgs e){ TextBox t = (TextBox)sender; if (t.Text.Length > 1 && t.Text.Substring(t.Text.Length - 1, 1) == " ") { // Primeiras letras em maiuscula e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper()); } else if (t.Text.Length == 0 || t.SelectionLength == t.Text.Length) { // Primeira de todas em maiuscula e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToUpper()); } else // O resto minusculo e.KeyChar = Convert.ToChar(e.KeyChar.ToString().ToLower());} Que tal um pouco de C#?Bom, hoje tive uma curiosidade e pesquisei sobre metodos de tornar a primeira letra de cada palavra maiuscula.Vi solucoes diferentes, e a que mais tem um usando cadeia caracteres. Vejam:private string Maiuscula(string value){ char[] resultado = value.ToCharArray(); // Torna o primeiro caracter maiusculo resultado[0] = char.ToUpper(resultado[0]); for (int i = 1; i < resultado.Length; ++i) { if (char.IsWhiteSpace(resultado[i - 1])) // Torna o caracter maiusculo se precedido de espaco resultado[i] = char.ToUpper(resultado[i]); else // Torna todos os outros caracteres