Read specific text inside a .txt in C #

3

I need to read a text file that contains several lines:

1            C0000000000                       132008281               
06140214     080515                            0000000005990 
00000000000000000000000000000000000599000000000000000000000000000

I need to get only the value 132008281 and put it in a variable, just this value.

I'm using the following code:

//cria uma lista para armazenar os dados encontrados no documento
List<string> dados = new List<string>();
// indica qual o caminho do documento
string filePath = CaminhoArquivo;
//declara uma variável para receber linha por linha do doc
string linha;
//verifica se existe um doc com o nome passado ates de fazer a leitura
if (File.Exists(filePath))
{
       //usa uma biblioteca chamada StreamReader para fazer a leitura do arquivo baseado no caminho informado
       using (StreamReader reader = new StreamReader(filePath))
       {
           //cria um loop para adicionar linha por linha do doc até sua ultima linha
           while ((linha = reader.ReadLine()) != null)
           {
               //adiciona linha a linha a nossa lista de dados
               dados.Add(linha);
           }
       }
       for (int i = 0; i < dados.Count; i++)
       {
           Leiturax += dados[i].ToString()+"\n";
       }   
       Leiturax = Leiturax;
}
else
{
       //caso não encontre nenhum registro da a mensagem abaixo
       MessageBox.Show("Nenhum registro encontrado!", "Lendo Arquivo", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

This code creates a Array , but I need to get only that portion of the text.  Can anyone help me?

    
asked by anonymous 29.05.2015 / 15:48

2 answers

3

Follow the code to always look for the third value (separated by whitespace) of each line, and add it to a valoresEncontrados list.

List<string> valoresEncontrados = new List<string>();

try
{
    string[] lst = File.ReadAllLines(filePath);

    foreach (var item in lst)
    {
        string[] linha = item.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

        if (linha.Length >= 3)
        {
            valoresEncontrados.Add(linha[2]);
        }
    }
}
catch(Exception ex)
{

}
    
29.05.2015 / 21:59
0

I think the code is self-explanatory

using System.IO;
using System.Linq;

try
{
    var valores = File.ReadLines(filePath)
                      .Select(line => line.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries))
                      .Where(split => split.Length >= 3)
                      .Select(split => split[2])
                      .ToList();

}
catch(IOException ex)
{
    //mostrar erro
}

Note: It's no use checking if the file exists with File.Exists before opening it, see the explanation here >. Simply open the file, and then pick the exception.

    
29.05.2015 / 16:10