none
Formatar String RRS feed

  • Pergunta

  • Fala Pssoal,
    Boa Tarde !!


    Gostaria de uma ajuda !!

    é o seguinte.

    tenho uma datarow e suas colunas.
    preciso salvar o valor da coluna em txt, porem deve-se ter um tamanho minimo. por exemplo

    tenho na coluna 0 o valor 123, mais sei que essa coluna tem que ter no minimo 5 "caracteres" no arquivo , sendo assim preciso adicionar 3 espaços em branco na frete do numero ( _ siguinifaca aqui neste exemplo espaço), entçao ficaria
    _ _ _ 123 para salvar no arquivo.

    Preciso de um metodo bem eficiente, porque tenho várias linhas e tb várias colunas, sendo assim preciso de formatr o texto bem rapido


    Alguem saberia me dizer como posso fazer isso

    ??

    desde já agradeço pela atenção ....

    Abraço a Todos !!


    terça-feira, 13 de janeiro de 2009 19:36

Respostas

  • Olá Bruno,

     

    Não sei se entendi sua dúvida, mas se o seu objetivo é gerar um arquivo texto a partir de informações que estão em um DataTable, você não deveria (ou não precisa) utilizar LINQ...

     

    A classe String fornece uma série de métodos para formatação e manipulação de strings... Você só terá de se preocupar com esses espaços na hora de gravar as informações no arquivo. Você não precisa carregar tudo no DataTable, já com os espaços...

     

    Algo como:

     

    Code Snippet

     

     // Abre o arquivo para escrever o conte£do...

     StreamWriter writer = new StreamWriter(@"C:\SeuArquivo.txt");

     

     // ...

     foreach (DataRow row in suaDataTable.Rows)

     {

    // Formata o campo para ter 5 caracteres, completando com espa‡os … esquerda

    string campoFormatado = row["NomeDoCampo"].ToString().PadLeft(5, ' ');

     

    // Escreve o campo formatado (com os espa‡os)

    writer.Write(campoFormatado);

     

    // ...

     }

     

     

    De qualquer forma, gerar arquivos dessa forma (ou da forma que você sugeriu) não é a melhor maneira... Existem alternativas melhores. Sugiro a leitura do tópico abaixo:

     

    Como Manipular um DataSet ou DataReader depois de carregar os dados?
    http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=4268186&SiteID=21

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    • Marcado como Resposta Bruno Brandes terça-feira, 10 de fevereiro de 2009 14:46
    quinta-feira, 15 de janeiro de 2009 01:59

Todas as Respostas

  • Olá Bruno,

     

    Não sei se entendi sua dúvida, mas se o seu objetivo é gerar um arquivo texto a partir de informações que estão em um DataTable, você não deveria (ou não precisa) utilizar LINQ...

     

    A classe String fornece uma série de métodos para formatação e manipulação de strings... Você só terá de se preocupar com esses espaços na hora de gravar as informações no arquivo. Você não precisa carregar tudo no DataTable, já com os espaços...

     

    Algo como:

     

    Code Snippet

     

     // Abre o arquivo para escrever o conte£do...

     StreamWriter writer = new StreamWriter(@"C:\SeuArquivo.txt");

     

     // ...

     foreach (DataRow row in suaDataTable.Rows)

     {

    // Formata o campo para ter 5 caracteres, completando com espa‡os … esquerda

    string campoFormatado = row["NomeDoCampo"].ToString().PadLeft(5, ' ');

     

    // Escreve o campo formatado (com os espa‡os)

    writer.Write(campoFormatado);

     

    // ...

     }

     

     

    De qualquer forma, gerar arquivos dessa forma (ou da forma que você sugeriu) não é a melhor maneira... Existem alternativas melhores. Sugiro a leitura do tópico abaixo:

     

    Como Manipular um DataSet ou DataReader depois de carregar os dados?
    http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=4268186&SiteID=21

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    • Marcado como Resposta Bruno Brandes terça-feira, 10 de fevereiro de 2009 14:46
    quinta-feira, 15 de janeiro de 2009 01:59
  •  

    Um complemento a resposta do Caio,

     

    Voce provavelmente deve estar querendo montar uma string com o valor dos campos em um formato que vai ser lido por um outro programa (provavelmente em cobol certo ?)

     

    Se vc usuando um DataSet Tipado vc pode implementar uns metodos no seu datarow para facilitar o processo:

     

    (nesse exeplo tenho uma DataTable com uma coluna chamada Colum1

     

    cria um novo cs.... chamando MeuDataRow.cs (ou o nome do tipo do seu DataRow Tipado)

     

    Code Snippet

    partial class MeuDataRow {

          public int Colum1Size { get; set; } 

          public int Colum2Size { get; set; } 

          public int Colum3Size { get; set; } 

        

         public override string ToFixedString() {

    return

    Colum1.ToString().PadLeft(Colum1Size, ' ') +

    Colum2.ToString().PadLeft(Colum2Size, ' ') +

    Colum3.ToString().PadLeft(Colum3Size, ' ');

         }

    }

     

     

     

    quinta-feira, 15 de janeiro de 2009 12:49
    Moderador