none
Substituir palavras em um Texto

    Question

  • Olá.

    Estou precisando fazer algo do tipo, preciso pegar um texto e substituir algumas palavras por outros valores, por exemplo:

     

    if (&teste > 10)
    {
       executar()
    }

    Verificaria as palavras, então por exemplo, a parte do "&teste" eu substituiria por "teste.Valor" e o "executar()" substituiria por "sf.executar()", assim ficaria:

     

    if (teste.Valor > 10)
    {
       sf.executar()
    }

     

    Pensei em dar um split no texto mas ai os parênteses iriam atrapalhar algumas vezes e para remontar o texto ficaria ruim. Tentei usar Regex também mas não consegui fazer funcionar, só retornava false o isMatch().

    Aproveito para dizer que esses valores a serem substituidos sempre serão padrão, então sempre que encontrar o "&teste" irei substituir por "teste.Valor", então vocês acham que seria interessante criar alguma "tabela" ou algo com esses valores para dar mais agilidade nessa procura e substituição? Se sim o que me aconselham a usar?

    Obrigado.





    • Edited by maozao Sunday, January 22, 2012 1:57 PM
    Sunday, January 22, 2012 1:54 PM

Answers

  • Olá,

    Como o Ediney disse, você poderia utilizar o método Replace da classe string. Mas, para te ajudar nisso, você poderia utilizar a classe StringBuilder. Ela possui métodos que podem facilitar a montagem da nova string, já com as substituição. Veja os links abaixo:

    http://www.criarprogramas.com/2011/12/c-net-metodos-da-classe-stringbuilder/ 

     

    Pode ser que isso possa te ajudar.

     


    Atenciosamente, Fábio Almeida - Site CriarProgramas - http://www.criarprogramas.com/ e Informática Recreativa - http://www.informaticarecreativa.com
    • Marked as answer by maozao Monday, January 23, 2012 2:03 PM
    Sunday, January 22, 2012 3:59 PM

All replies

  • Não é dificil fazer oque você quer meu amigo basta voce utilizar o método Repleace da string.

     

    COmo voce tem um padrão por exemplo "&termo" ou "termo()" vocè pode fazer uma função de split para quebrar por espaço percorrer o valor e dar repleace no mesmo Exemplo:

            public static string Teste(string valor)
            {
    
                string newStr = "";
                string[] vet = valor.Split(' ');
                foreach (var str in vet)
                {
                    if (str.Contains("&"))
                    {
                        newStr += str.Replace("&", string.Empty) + ".Valor ";
                    }
                    else if (str.Contains("()"))
                    {
                        int indx = 0;
                        foreach (var t in str)
                        {
    
                            if (Regex.IsMatch(t.ToString(), "[a-zA-Z0-9]"))
                            {
                                newStr += "sf." + str.Substring(indx) + " ";
    
                                break;
                            }
                            else
                            {
                                indx++;
                                newStr += t.ToString() + " ";
                                continue;
                            }
                        }
                    }
                    else
                    {
                        newStr += str + " ";
                    }
                }
                return newStr;
            }
    
    
    
            public static void Chamar()
            {
    
                Console.WriteLine(Teste("if(&valor > 10) {executar(); }"));
    
            }
    

    Isso irá resolver seu problema


     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    Sunday, January 22, 2012 3:42 PM
  • Olá,

    Como o Ediney disse, você poderia utilizar o método Replace da classe string. Mas, para te ajudar nisso, você poderia utilizar a classe StringBuilder. Ela possui métodos que podem facilitar a montagem da nova string, já com as substituição. Veja os links abaixo:

    http://www.criarprogramas.com/2011/12/c-net-metodos-da-classe-stringbuilder/ 

     

    Pode ser que isso possa te ajudar.

     


    Atenciosamente, Fábio Almeida - Site CriarProgramas - http://www.criarprogramas.com/ e Informática Recreativa - http://www.informaticarecreativa.com
    • Marked as answer by maozao Monday, January 23, 2012 2:03 PM
    Sunday, January 22, 2012 3:59 PM
  • Acredito que a melhor solução seria verificar atraves de IF a condição e qual metodo devera utilizar, caso seja necessario modificar metodo. Se for modificar alguma string, da pra utilizar o replace. nomeString = nomeString.replace("valorOld","valorNew");
    • Edited by Caio Vieira Monday, January 23, 2012 10:37 AM
    Monday, January 23, 2012 10:32 AM