Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Criar regra para cadeia de string

Olá, tenho o seguinte código:

using System;
using System.Text; //Para o Encoding
using System.IO; //Entrada e Saída

namespace Programa
{
    class Program
    {
        static void Main(string[] args)
        {
            var caminhoNome = "C:\\Users\\ALVITRO\\Documents\\codigo\\txt\\arq01.txt";

            string [] info = {"2", "ALINE VITORIA", "BMW"};

            try
            {
                using(var fluxoDeArquivo = new FileStream(caminhoNome, FileMode.Create))
                using(var escritor = new StreamWriter(fluxoDeArquivo, Encoding.UTF8))
                {
                    foreach (string i in info)
                    {
                        StringBuilder myStringBuilder = new StringBuilder(i);
                        myStringBuilder.AppendFormat("##############" + "\n", i);
                        escritor.Write(myStringBuilder);
                    }

                    Console.WriteLine("Arquivo alterado!");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
        }

Na parte de escrever no programa eu preciso criar uma regra de cadeia, por exemplo o nome precisa ter 20 caracteres, como o nome mostrado ai tem menos de 20 a diferença deve ser preenchida com X.

Outro exemplo, preciso que o campo código tenha 5 caracteres =00000 Mas na minha string o código é 2 preciso que ele imprima 00002

3 respostas

Olá, Aline. Tudo bem? Você pode utilizar o PadRight ou PadLeft

if(texto.Trim().Length>20) //limpando espaços e validando tamanho 
    texto = texto.Substring(0,20); // se for maior que 20, retiro o "excesso".
else
    texto = texto.PadRight(20,'X');//preencho espaços vazios com X até completar 20 caracteres PadRight(tamanho, char)

if(numero.Length < 5)
    numero = numero.PadLeft(5,'0'); //caso seja menor que 5 caracteres, preencho com 0 a esquerda.

Olá Carlos, consegui usar o metodo mas agora estou com uma outra dificulde, eu faço uma consulta SQL.

var caminhoNome = @"C:\Users\Aline\Documents\teste\arq001.txt";
            string connetionString;
            SqlConnection cnn;
            connetionString = @"Data Source=laptop-iig98vlu;Initial Catalog=SUCOS_VENDAS;Persist Security Info=True;User ID=sa;Password=||||";
            try
            {
                using (cnn = new SqlConnection(connetionString))
                {
                    cnn.Open();
                    //MessageBox.Show("Conexão ok!");

                    SqlCommand command;
                    SqlDataReader dataReader;
                    String sql, Output = "";

                    sql = "SELECT * FROM dbo.[TABELA DE CLIENTES]";
                    command = new SqlCommand(sql, cnn);

                    dataReader = command.ExecuteReader();

         while (dataReader.Read())
                    {
                        Output = Output + dataReader.GetValue(0) + ";" + dataReader.GetValue(1) + "\n";
                    };
                    DataTable OutputTable = new DataTable(Output);

        var lsteste = ConvertToList<List<string>>(OutputTable);

                    dataReader.Close();
                    command.Dispose();
                    cnn.Close();

A chamada var lsteste = ConvertToList<List>(OutputTable); é de um método que criei

O arquivo tem escrito System.Collections.Generic.List1[System.Collections.Generic.List1[System.String]], Não estou conseguindo transformar os itens do sql para o arquivo. E sinceramente, não sei o quê fiz de errado

solução!

Aline, no olho, acredito que seu erro seja ao capturar valor da lista, para efetuar tal tarefa você deve percorrer a lista através de um for ou foreach, por exemplo.

lsteste[numeroDaLinha].ToString()

pelo que vi, você concatena campos na linha utilizando ; como "divisão" de valores. Você pode utilizar Split para separar os campos novamente

 string[] campos = lsteste[numeroDaLinha].ToString().Split(';');

exemplo de for capturando valores da lista

string dados = string.Empty; 
 for(int linha=0; linha<lsteste.Count;linha++)
    dados= lsteste[linha].ToString();

Espero ter ajudado.