none
Remover Caracteres de um texto RRS feed

  • Pergunta

  • Bom dia.
    Estou precisando encontrar uma solução mais simples. Exemplo
    Eu tenho um texto assim:
    {Nome} Residente na rua {rua} bairro {bairro}
    na cidade de {Cidade}
    eu preciso pegar somente o que está entre {}, e armazenar em um array, eu até sei uma solução de percorrer caracter por caracter, mas gostaria de saber se alguém conhece uma maneira mais fácil.

    obrigado.

    terça-feira, 3 de setembro de 2013 13:51

Respostas

  • Existe algumas formas, mas, essa é utilizando Expressão Regulares que no meu ver fica um código limpo e excelente de se entender!

    Segue logo abaixo:

    string Texto = "{Nome} Residente na rua {rua} bairro {bairro} na cidade de {Cidade}";
    IList<string> EncontradosLista = new List<string>(); 
    MatchCollection Encontrados = Regex.Matches(Texto, @"{[\w]{1,}}", RegexOptions.Multiline | RegexOptions.IgnoreCase);            
    if (Encontrados.Count > 0)
    {
    	IEnumerator Faca = Encontrados.GetEnumerator();
    	while (Faca.MoveNext())
    	{
    		EncontradosLista.Add(Faca.Current.ToString());
    	}
    	//EncontradosLista é o array que você pediu
    }
    Ref do meu Blog Pessoal: http://fulviocanducci.wordpress.com/tag/regex/


    Fúlvio Cezar Canducci Dias


    terça-feira, 3 de setembro de 2013 15:46

Todas as Respostas

  • Bom dia Everton,

    Eu já passei por algo parecido e encontrei a solução em um post no stackoverflow que segue abaixo:

    http://stackoverflow.com/questions/10709821/find-text-in-string-with-c-sharp

    Basicamente o código é o seguinte:

    public static string getBetween(string strSource, string strStart, string strEnd)
    {
        int Start, End;
        if (strSource.Contains(strStart) && strSource.Contains(strEnd))
        {
            Start = strSource.IndexOf(strStart, 0) + strStart.Length;
            End = strSource.IndexOf(strEnd, Start);
            return strSource.Substring(Start, End - Start);
        }
        else
        {
            return "";
        }
    }
    
    

    E você usa da seguinte forma:

    string text = "This is an example string and my data is here";
    string data = getBetween(text, "my", "is");

    terça-feira, 3 de setembro de 2013 14:14
  • Existe algumas formas, mas, essa é utilizando Expressão Regulares que no meu ver fica um código limpo e excelente de se entender!

    Segue logo abaixo:

    string Texto = "{Nome} Residente na rua {rua} bairro {bairro} na cidade de {Cidade}";
    IList<string> EncontradosLista = new List<string>(); 
    MatchCollection Encontrados = Regex.Matches(Texto, @"{[\w]{1,}}", RegexOptions.Multiline | RegexOptions.IgnoreCase);            
    if (Encontrados.Count > 0)
    {
    	IEnumerator Faca = Encontrados.GetEnumerator();
    	while (Faca.MoveNext())
    	{
    		EncontradosLista.Add(Faca.Current.ToString());
    	}
    	//EncontradosLista é o array que você pediu
    }
    Ref do meu Blog Pessoal: http://fulviocanducci.wordpress.com/tag/regex/


    Fúlvio Cezar Canducci Dias


    terça-feira, 3 de setembro de 2013 15:46
  • Obrigado galera como sempre tem alguém aqui que consegue ajudar
    terça-feira, 3 de setembro de 2013 16:51