Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Manipulação de string

Em uma leitura de arquivo de contas correntes, eu estou tendo que trocar o caracter de pronto '.' para o caracter de ',' pois se eu nao trocar o saldo nao aparece com casas decimais, alguem poderia me explicar o porque? segue o codigo:

static void LendoArquivoContas()
        {
            using (var arquivo = new FileStream("contasExportadas.csv", FileMode.Open))
            using (var leitor = new StreamReader(arquivo, Encoding.UTF8)) // se nao colocado o Encoding, vai ser usado o encoding padrao;
            {
                while (!leitor.EndOfStream)
                {
                    Console.WriteLine(ConverterStringParaContaCorrente(leitor.ReadLine()));
                }
            }
        }

        static ContaCorrente ConverterStringParaContaCorrente(string linha)
        {
            var campos = linha.Split(','); // divide a string pelo caracter passado no caso => ' ';

            var agencia = campos[0];
            var numero = campos[1];
            var saldo = campos[2].Replace('.', ',');
            var nomeTitular = campos[3];

            var agenciaInt = int.Parse(agencia);
            var numeroInt = int.Parse(numero);
            var saldoDouble = double.Parse(saldo);

            var resultado = new ContaCorrente(agenciaInt, numeroInt);
            resultado.Depositar(saldoDouble);
            resultado.Titular.Nome = nomeTitular;

            return resultado;
        }

Eu testei em string normal instanciando uma conta corrente e transformando o saldo em string e nao precisei trocar a virgula que ele ja apareceu o saldo com as casas decimais.

1 resposta
solução!

Isso acontece porque você não definiu a cultura. O padrão brasileiro é usar casas decimais com a virgula.

Você pode fazer alguns testes passando a cultura, por exemplo

//seu retorno será 0.10
decimal d1 = decimal.Parse("0,10", new CultureInfo("pt-BR"));

//seu retorno sera 10
decimal d2 = decimal.Parse("0.10", new CultureInfo("pt-BR"));