none
Como gravar em um objeto uma linha do arquivo RRS feed

  • Pergunta

  • Saudações! 

    Preciso salvar uma base de dados (.txt) que o formato é (exemplo):  

    01 Gerencia de projetos de sofware

    02 Otimização de sofware

    03 Segurança da Informação

    04 Criação de Sofware

    Onde há identificação do tema e nome do tema, respectivamente. 

    Porém preciso pegar apenas a identificação e gravar em um atributo, e o restante (nome do tema) gravar em outra variável. 

    Tentei fazer Split concatenando um espaço, mas ele separou tudo, inclusive o nome do tema. 

    O objetivo é: Pegar apenas o int da identificação do tema, e separar da string do nome do tema.

    atualmente está assim:

    METODO PARA GRAVAÇÃO

     public static void Ler_Temas_TCC(string arqTemas)
            {
                if (File.Exists(arqTemas))
                {
                    string[] dadosTemas = LerArquivo(arqTemas, Encoding.Default); //le arquivo 

                    string[] dadoTema = null;

                    for (int i = 0; i < dadosTemas.Length; i++) //gravar dados na lista
                    {
                        if (dadosTemas[i] != null && dadosTemas[i] != "")
                        {
                            dadoTema = dadosTemas[i].Split(' '); //separa ID DO TEMA do aluno e DESCRICAO do tema

                            if (dadoTema.Length == 2)
                            {
                                Tema tema = new Tema(Convert.ToInt32(dadoTema[0]), ""); //cria objeto tema
                                temas.Add(tema); //adiciona na lista
                            }
                        }
                    }
                }
            }

    METODO PARA LEITURA

    public static string[] LerArquivo(string path, Encoding encoding)
            {
                if (File.Exists(path))
                {
                    StreamReader arqDados = new StreamReader(path, encoding);
                    List<string> dados = new List<string>();
                    string linha = arqDados.ReadLine();
                    while (linha != null)
                    {
                        dados.Add(linha);
                        linha = arqDados.ReadLine();
                    }
                    arqDados.Close();

                    return dados.ToArray();
                }

                return null;
            }


    quinta-feira, 26 de outubro de 2017 19:40

Respostas

Todas as Respostas

  • Use substring. Exemplo:

    string opcao= "01 Gerencia de projetos de sofware".substring(0,2);

    string indice = opcao.substring(0,2); 

    sexta-feira, 27 de outubro de 2017 02:48
  • Angelo, 

    Você pode apenas acrescentar um parâmetro no seu Split indicando o máximo de subcadeias, assim após o primeiro espaço ele não irá dividir mais.

    Ex:

    using System;
    					
    public class Program
    {
    	public static void Main()
    	{
    		var texto = "01 Gerencia de projetos de sofware";
    		var vetor = texto.Split(new[] {' '}, 2);
    		
    		Console.WriteLine(vetor[0]); // OUT: 01
    		Console.WriteLine(vetor[1]); // OUT: Gerencia de projetos de sofware
    
    	}
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sexta-feira, 27 de outubro de 2017 10:19
  • Olá Angelo Diniz

    Você esta realizando o split por  "ESPAÇO" você não acha que isso pode ser muito perigoso, pegar informação incorreta?

    Você não pode alterar o padrão deste TXT para colocar um delimitador?


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    sexta-feira, 27 de outubro de 2017 10:43
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 30 de outubro de 2017 17:22
    Moderador