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.
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.