Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Aula 05 - interpolação de strings no contrato

Olá Marcelo, parabéns pelo curso.

Durante a última aula tive uma dúvida relacionada ao projeto final.

Para a realização de interpolação, o texto do contrato foi colado diretamente no código, deixando-o um tanto "sujo". Seria possível fazer o mesmo processo de interpolação, só que usando um arquivo de contrato separado do código, em um .txt por exemplo (usando StreamReader, etc)?

Caso não, quais alternativas posso usar para substituir os termos de um arquivo .txt usando C#? (regex seria uma solução?)

Agradeço.

2 respostas
solução

Olá, Giovanni

Obrigado, fico feliz que tenha gostado do curso!

Sim, eu usei um caso extremo para demonstrar a interpolação de strings, porém na vida real teríamos algo como o modelo do contrato de trabalho num arquivo texto, e o programa teria que abrir esse arquivo e substituir os campos pelas propriedades do objeto contrato.

O que eu faria, nesse caso? Aqui vão alguns passos que você pode realizar no projeto:

  • crie um documento chamado documento.txt e inclua como item do projeto, marcando Copy to Output Directory = Copy if newer.
  • Em seguida, substitua todas as chaves do documento por símbolos de maior/menor, exemplo:
                                             CONTRATO INDIVIDUAL DE TRABALHO TEMPORÁRIO


            EMPREGADOR: <contrato.Empresa.RazaoSocial>, com sede à <contrato.Empresa.Endereco.Logradouro>, <contrato.Empresa.Numero>, <contrato.Empresa.Endereco.Bairro>, CEP <contrato.Empresa.Endereco.CEP>, <contrato.Empresa.Endereco.Localidade>, <contrato.Empresa.Endereco.UF>, inscrita no CNPJ sob nº <contrato.Empresa.CNPJ>;

            EMPREGADO: <contrato.Funcionario.Nome>, <contrato.Funcionario.Nacionalidade>, <contrato.Funcionario.EstadoCivil>, portador da cédula de identidade R.G.nº <contrato.Funcionario.RG> e CPF/ MF nº <contrato.Funcionario.CPF>, residente e domiciliado na <contrato.Funcionario.Endereco.Logradouro>, <contrato.Funcionario.Numero>, <contrato.Funcionario.Endereco.Bairro>, CEP <contrato.Funcionario.Endereco.CEP>, <contrato.Funcionario.Endereco.Localidade>, <contrato.Funcionario.Endereco.UF>.
...
  • Agora substitua o campo contrato.Empresa.RazaoSocial por chaves com índice zero: EMPREGADOR: {0}, em todos os locais do arquivo

  • Comente o Console.WriteLine do documento e adicione código para ler o documento e usar string.Format para substituir o campo de razão social da empresa por um argumento:

            //Console.WriteLine(documento);

            using (var sr = new StreamReader("documento.txt"))
            {
                var content = sr.ReadToEnd();
                Console.WriteLine(string.Format(content, contrato.Empresa.RazaoSocial));
            }
  • Isso irá produzir uma string formatada conforme abaixo. Repita esses passos para os demais campos do contrato.
                                             CONTRATO INDIVIDUAL DE TRABALHO TEMPORÁRIO


            EMPREGADOR: Alura Serviços Hidráulicos Ltda., com sede à <contrato.Empresa.Endereco.Logradouro>, <contrato.Empresa.Numero>,

Obrigado pela resposta Marcelo.