Hoje gostaria de informar e mostrar como encontrar um valor de uma string grande, isto é, “stringona” separada com algum caracter especial. Antigamente existia o Split e ainda existe, mas para este nosso caso não é apropriado.
Para quem quiser ver mais sobre o Split no C#.NET, acesse o link abaixo:
http://ecode10.com/artigo/554/Usando+Split+No+CSharp.aspx
Tag: Microsoft .NET, ASP.NET, C#.NET, Framework .NET
Este documento informa como pegar valores específicos dentro de um conjunto de caracteres misturados ou juntados sem organização. Para isso, o presente documento mostra exemplos reais e funcionais.
O primeiro passo é construir um método específico que faça isso. (Code 1.1)
/// <summary> /// Busca um texto associado a um campo em uma linha de informações. /// </summary> /// <param name="title">Nome do campo.</param> /// <param name="textLine">Linha de informações.</param> /// <param name="sep">Caracter separador.</param> /// <param name="appendTitle">Se true, inclui o nome do campo no retorno.</param> /// <returns>O texto associado a um campo em uma linha de informações.</returns> public static string EncontrarValor(string title, string textLine, char sep, bool appendTitle) { if (String.IsNullOrEmpty(title)) return ""; if (String.IsNullOrEmpty(textLine)) return ""; if (sep == '\u0000') return ""; int titlePos = textLine.IndexOf(title + "="); if (titlePos == -1) return ""; if (!appendTitle) titlePos += title.Length + 1; int SepPos = textLine.IndexOf('|', titlePos); if (SepPos > -1) return textLine.Substring(titlePos, (SepPos - titlePos)); else return textLine.Substring(titlePos); } |
Code 1.1
Este método é do tipo estático, tem como retorno o tipo string e recebe como parâmetro vários tipos de variáveis diferentes. A primeira do tipo string, a segunda também do tipo string, o terceiro char e o quarto bool.
O primeiro parâmetro é o nome do campo que deseja buscar, o segundo é o valor misturado “aquele stringao” , o terceiro é o tipo de caracter de separação porexemplo: “ §”, “-“, “/”, “|” ou qualquer outro parecido. Você escolhe qual caracter. O último campo de parâmetro de entrada deve ser passado true ou false. Isso quer dizer que você pode receber de volta o campo e o texto ou só o texto. Se for passado false, você recebe sóo valor do texto e se for passado true você recebe o valor e nome do campo.
Não é nada complexo mas precisamos desse tipo de coisa. Para adiantar o meu caso, criei outros métodos para consumir desse método maior. (Code 1.2 e 1.3)
/// <summary> /// Busca um texto associado a um campo em uma linha de informações. /// </summary> /// <param name="title">Nome do campo.</param> /// <param name="textLine">Linha de informações.</param> /// <returns>O texto associado a um campo em uma linha de informações.</returns> public static string FindTextValue(string title, string textLine) { return EncontrarValor(title, textLine, '|', false); } |
Code 1.2
O método Code 1.2 consome o Code 1.1 passando dois valores fixos como o char “|”e o “false” informando que só quer o valor de retorno e não o campo.
/// <summary> /// Busca um texto associado a um campo em uma linha de informações. /// </summary> /// <param name="title">Nome do campo.</param> /// <param name="textLine">Linha de informações.</param> /// <param name="sep">Caracter separador.</param> /// <returns>O texto associado a um campo em uma linha de informações.</returns> public static string FindTextValue(string title, string textLine, char sep) { return EncontrarValor(title, textLine, sep, false); } |
Code 1.3
O método Code 1.3 já passa apenas um valor fixo que é o último “false” para não retornar o valor o e campo.
Imagine a sua string dessa maneira: NOME=MAURICIOJUNIOR|IDADE=29|ENDERECO=WWW.MAURICIOJUNIOR.ORG|TELEFONE=0090980
Esses métodos pegam a “stringona” e separada. Para utilizar, escrevi o código abaixo para a plataforma Windows Forms. (Code 1.4)
private void Form1_Load(object sender, EventArgs e) { string valor = "NOME=MAURICIO JUNIOR|IDADE=29|ENDERECO=WWW.MAURICIOJUNIOR.ORG"; string nome = Util.EncontrarValor("NOME", valor, '|', false); MessageBox.Show(nome); } |
Code 1.4
O resultado do Code 1.4 mostra em alerta. (Imagem 1)

Imagem 1
Pedi agora para pegar a IDADE em vez do NOME. (Imagem 2)

Bom, espero que tenha gostado e qualquer dúvida pode entrar em contato.