String.Format usando C#
String.Format
Caro(a) Leitor(a) hoje eu vou falar um pouco sobre string.format, isso porque encontrei muitos desenvolvedores com dúvidas sobre o assunto de customização de números ou strings utilizando a tecnologia da Microsoft.
Neste documento, procuro sempre explicar o conceito e depois mostrar o exemplo funcionando. Em caso de dúvidas, pode entrar em contato pelo site www.mauriciojunior.org.
Utilizado:
Ferramenta: Visual Studio 2010 x pra cima.
Linguagem: C#
Plataforma: Web, Desktop e Mobile
Ambiente: Windows
Você pode customizar usando o 0 (zero) no momento de escrever o código. Veja o exemplo abaixo:
Listagem 1 – Código customizado com 0
double _valor;
_valor = 123;
Response.Write(_valor.ToString("00000") + "
");
");
Response.Write(string.Format("{0:00000}", _valor));
//Resultado: 00123
//Resultado: 00123
Note que na listagem 1, os dois jeitos de formatar mostram o mesmo resultado. O segundo tipo de formatação funciona com chaves entre as strings e dois pontos antes do formato específico. Se você mudar o exemplo acrescentando mais um valor na variável (_valor), o resultado fica 01234; isto é; diminui a quantidade de zeros a esquerda do número.
Você sabia que podemos utilizar a regra local para formatar de acordo com a língua do usuário? Vou mostrar alguns exemplos abaixo.
Listagem 2 – Código customizado com cultura
double _valor;
_valor = 10.2;
CultureInfo _ptBR = CultureInfo.CreateSpecificCulture("pt-BR");
Response.Write(_valor.ToString("00.00", _ptBR) + "
");
");
Response.Write(string.Format(_ptBR, "{0:00.00}", _valor));
//Resultado: 10,20
//Resultado: 10,20
_valor = 1000.2;
CultureInfo ptBR = CultureInfo.CreateSpecificCulture("pt-BR");
Response.Write(_valor.ToString("0,0.00", ptBR) + "
");
");
Response.Write(string.Format(ptBR, "{0:0,0.00}", _valor));
//Resultado: 1.000,20
//Resultado: 1.000,20
Antes de utilizar o que foi mostrado na listagem 2, é necessário importar uma classe de globalização, pelo contrário o método CultureInfo não funcionará. A importação é simples, no topo da classe coloque using System.Globalization; .
Depois de fazer a importação basta informar que a cultura que você quer é do Brasil, ou seja, pt-BR como está escrito na listagem 2. Caso queira coloca outra cultura, basta mudar essa string. Note que na listagem 2 existem dois exemplos diferentes e o último utiliza vírgula e ponto no caso de valores maiores.
Para escrever o valor de 10.2 na cultura do Brasil, ou no formato do Brasil, basta colocar a formatação com a cultura. Usando o comando string.format você precisa colocar como primeiro parâmetro, no ToString() é necessário colocar por último. O resultado é o mesmo.
Podemos utilizar outra cultura para ver se o mesmo valor será mostrado de forma diferente. Veja a listagem 3.
Listagem 3 – Mudando a cultura
CultureInfo ptBR = CultureInfo.CreateSpecificCulture("zh-CN");
//Resultado: 10.20
//Resultado: 1,000.20
Note que na listagem 3 a cultura foi alterada para a cultura da China e lá o pessoal não utiliza vírgula para separar os valors dos centados. A cultura especificada mudou de vírgula para ponto. Se você não quiser utilizar a cultura, isto é, o valor tem que ser exibido de qualquer jeito independendo da cultura, basta colocar de forma diferente. Veja a listagem 4.
Listagem 4 – Independente de cultura
Response.Write(_valor.ToString("0,0.00", CultureInfo.InvariantCulture) + "
");
");
Response.Write(string.Format(CultureInfo.InvariantCulture, "{0:0,0.00}", _valor));
De acordo com a listagem 4, qualquer cultura que aparecer o formato será o mesmo.
Nós podemos customizar as variáveis utilizando o símbolo # ao invés de 0 (zero). Vou mostrar alguns exemplos para que possa seguir passo a passo. A listagem 5 mostra que o valor zero não é colocado a esquerda do valor, mostrado na listagem 1.
Listagem 5 – Customizando com símbolo
double _valor;
_valor = 123;
Response.Write(_valor.ToString("#####") + "
");
");
Response.Write(string.Format("{0:#####}", _valor));
//Resultado: 123
//Resultado: 123
Note que na listagem 5, o resultado foi o mesmo da variável atribuída no início. Não foi colocado zero a esquerda no resultado. Um outro exemplo na listagem 6 será mostrado para que veja a diferença para formatar um número de telefone, por exemplo.
Listagem 6 – Formatando valor para telefone
_valor = 6184269999;
Response.Write(_valor.ToString("(###) ####-####") + "
");
");
Response.Write(string.Format("{0:(###) ####-####}", _valor));
//Resultado: (61) 8426-9999
//Resultado: (61) 8426-9999
Na listagem 6, note que o valor é o telefone e eu preciso formatar de acordo com o meu formato. Pra isso, precisei utilizar o símbolo dentro do parêntese e traço entre os números para formatar corretamente. Neste caso não foi utilizado cultura específica e você pode formatar da forma que quiser e bem entender.
Passando para outro passo, podemos utilizar dados de forma separada dentro dos chaves como o primeiro nome e segundo nome. A listagem 7 mostra um exemplo bem funcional para o dia a dia dos desenvolvedores.
Listagem 7 – Separando os dados com chaves
String _nome = "Mauricio";
String _ultimoNome = "Junior";
Response.Write(string.Format("Meu nome é {0} e o meu útlimo nome é {1}", _nome, _ultimoNome));
//Resultado: Meu nome é Mauricio e o último nome é Junior
A listagem 7 mostra a simplicidade de trabalhar com string no meio e no fim de uma frase específica. Existem programadores que colocam tudo no meio utilizando o símbolo + e aspas duplas. Só que a melhor maneira de juntar as variáveis com a string é com string.format sem o uso de concatenação com símbolos + e aspas.
Como último exemplo de formatação utilizando string.format, vou mostra que uma data pode ser transformada de forma simples. A listagem 7 mostra o formato de hora, minuto, segundo, dia, mês e ano.
Listagem 8 – Formatando data
Response.Write(string.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now));
//Resultado: 08/01/2014 11:21
Você pode utilizar a formatação com cultura do mesmo exemplo mostrado nas listagens passadas. Espero que tenha aprendido e que tenha gostado de cada exemplo. Eu fico por aqui e qualquer dúvida pode entrar em contato pelo site www.mauriciojunior.org.
Subscribe ecode10.com
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.
Log In