Encontre no Texto com Expressões Regulares
Vou mostrar aqui 4 exemplos simples que captura texto, grupo de texto e faz replace dentro de um trecho via Expressão Regular
As ER's transferem um poder gigantesco quando necessitamos desta tarefas e até mesmo na geração de mascarás para textbox.
O REGEX possui algumas opções e é muito importante entender a funcionalidade de cada um para utilizar o ER da melhor forma:
http://msdn.microsoft.com/en-us/library/yd1hzczs(v=VS.100).aspx
Vamos a prática.
Buscando Texto
String Fonte = "aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés";
private void buscaTexto()
{
// Instância do Regex e a palavra que vamos buscar na fonte.
Regex regex = new Regex("Aonde");
// Armazena a coleção de Expressões Casadas.
MatchCollection coll = regex.Matches(Fonte);
foreach (Match item in coll)
{
lblResults.Text += String.Format(" Encontrei a palavra {0} na posição {1} e Termina na Posição {2}",
item.Value.Trim(), item.Index, item.Index + item.Value.Length);
}
}
Quantidade de Letras por palavras
String Fonte = "aonde Quer Vá, Aonde Quer Que Seja, Ande com as pés";
private void buscaTextoQtdLetras()
{
//Busca por palavras que contenha apenas Letras Maiuscula e Minuscula
// e tenham 3 ou mais caracteres.
Regex regex = new Regex("[a-zA-Z]{5,}");
// Armazena a coleção de Expressões Casadas.
MatchCollection coll = regex.Matches(Fonte);
foreach (Match item in coll)
{
lblResults.Text += String.Format(" Encontrei a palavra {0} na posição {1} e Termina na Posição {2} Que Possui {3} ou Mais", item.Value.Trim(), item.Index, item.Index + item.Value.Length, item.Value.Length);
}
}
Extraindo Grupo do Text
private void ExtraindoPorGrupos()
{
String End = "1234 Cherry Lane, USA" + Environment.NewLine + "1234 Apple Tree Drive, Smalltown, USA " + Environment.NewLine + "3456 Chry Orchard streetm Smalltown, USA";
//Busca da esquerda pra direita após os numeros o nome da rua, pegando os espaços \\s entre as letras e pegando todas,
//ignorando a virgula e tudo que vem após a mesma.
Regex regex = new Regex("^(?\\d+)\\s*(?[\\w\\s]*)", RegexOptions.Multiline);
MatchCollection coll = regex.Matches(End);
foreach (Match item in coll)
{
string Rua = item.Groups["Rua"].Value;
String Numero = item.Groups["Numero"].Value;
lblResults.Text += ""+ String.Format("Rua : {0} ", Rua);
lblResults.Text += "" + String.Format("Número :{0} ", Numero);
}
}
Replace Com Regex
private void ReplaceTexto()
{
Regex regex = new Regex("^[aA]\\w+");
lblResults.Text += "" + regex.Replace(Fonte, "Por Onde");
}
Após rodar a aplicação o seguinte resultado é gerado:
Muito legal, acredito que isto ajudará a ter noção do que da pra ser feito com Regex e Expressões Regulares, compensa sim dar uma estuda na sintaxe ER para .Net.
Obrigado.
Quick Post – Null Coalescing Operator
Sim, o FrameWork 4.0 tem novidades que eu considero muito interessante, estou estudando de forma prática algumas das novidades, esta aqui me fez escrever um Quick post.
Veja:
Esta Sintaxe:
public class CoalEscingNullOperator
{
public int? Variavel { get; set; }
public void TestandoNullOperator()
{
Variavel = null;
//Validação
if (Variavel != null)
{
Variavel = Variavel;
}
else
{
Variavel = 1;
}
//CoalEscingNull
Variavel = Variavel ?? 1;
}
}
Veja que com uma linha você tem o memso efeito que um bloco IF..Else!
Abraços.