locked
Como abrir um arquivo TXT e pesquisar dados? RRS feed

  • Pergunta

  • Boa tarde. Eu preciso abrir um txt e pequisar dados sequenciais. Por exemplo, pesquisar por "nome" e buscar no texto NOME: FULANO DE TAL e retornar apenas o "FULANO DE TAL". Um exemplo do conteúdo do texto:

    NOME: EDUARDO MANCIR IDADE: 27 ENDERECO: RUA ALTINO ARANTES NUMERO: 297
    CIDADE: SÃO PAULO NOME: CARLOS ABREU IDADE: 32 ENDERECO: RUA SAO JOSE NUMERO: 1002
    CIDADE: SÃO PAULO
    ...

    Não existe um padrão do tipo um "nome" por linha, na verdade está tudo emendado e o arquivo é bem extenso, com 1687 contatos.

    Alguém poderia me ajudar a montar um código em ASP.NET? Obrigado

    sexta-feira, 19 de novembro de 2010 17:59

Todas as Respostas

  • Alguém por favor?

    segunda-feira, 22 de novembro de 2010 10:10
  • Cara,

    Primeiro Leia todas as linhas com o método.

    string[] linhas =  File.ReadAllLines(@"bd.txt");

    Se o formato for este mesmo você terá que fazer caso a caso. Mas se tiver um separador é só fazer um SPLIT.

     

    LINHA A LINHA VC VAI FAZER ISSO:

    NOME: EDUARDO MANCIR IDADE: 27 ENDERECO: RUA ALTINO ARANTES NUMERO: 297

    Você terá que fazer um indexof("NOME:") e fazer um substring até o indexof("IDADE:"). Assim por diante...

    Vou tentar fazer um exemplo de código para te mandar.

     

     

    StringBuilder newFile = new StringBuilder();

                string[] lines = File.ReadAllLines(@"C:\ProjetosParticulares\SubstituirLinha\SubstituirLinha\bd.txt");

     

                foreach (string line in lines)

                {

                    int startNome = line.IndexOf("NOME:");

                    int startIdade = line.IndexOf("IDADE:");

                    int startEndereco = line.IndexOf("ENDERECO:");

                    int startNumero = line.IndexOf("NUMERO:");

                    int startCidade = line.IndexOf("CIDADE:");

     

                    string nome = line.Substring(startNome, startIdade - startNome);

                    string idade = line.Substring(startIdade, startEndereco - startIdade);

                    string endereco = line.Substring(startEndereco, startNumero - startEndereco);

                    string numero = line.Substring(startNumero, startCidade - startNumero);

                    string cidade = line.Substring(startCidade, line.Length - startCidade);

     

                    string[] nomeSeparado = nome.Split(':');

                    string[] idadeSeparado = idade.Split(':');

                    string[] enderecoSeparado = endereco.Split(':');

                    string[] numeroSeparado = numero.Split(':');

                    string[] cidadeSeparado = cidade.Split(':');

     

                    Console.WriteLine(nomeSeparado[1]);

                    Console.WriteLine(idadeSeparado[1]);

                    Console.WriteLine(enderecoSeparado[1]);

                    Console.WriteLine(numeroSeparado[1]);

                    Console.WriteLine(cidadeSeparado[1]);

     

     

                }

                Console.ReadLine();

     

     

    Terá que usar o mesmo principio para os outros.

     

    • Sugerido como Resposta Enrique Souza sexta-feira, 7 de janeiro de 2011 14:22
    sexta-feira, 7 de janeiro de 2011 14:07