Desenvolvimento - C#
Encontrar o valor no texto
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.
por Mauricio JuniorHoje 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
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 por exemplo: “ §”, “-“, “/”, “|” 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=MAURICIO JUNIOR|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)
Imagem 2
Bom, espero que tenha gostado e qualquer dúvida pode entrar em contato.