Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Placeholder {}
  2. Método String.Format
  3. Formatando com interpolação
  4. String literal em C#
  5. Alinhamento e formato
  6. Preenchimento à direita ou esquerda
  7. Formatando números
  8. Formatando datas
  9. Formatando moeda
  10. Formatando com ToString

A linguagem C# permite que possamos formatar nossas strings e dados de forma a exibí-los de forma mais legível e compreensível/amigável contendo valores formatados ou melhor organizados para os usuários de nossos programas.

Os tipos de dados utilizados nesta seção foram vistos em C# Básico: Tipos de Dados bem como os métodos para saída de dados que foram vistos em C# Básico: Entrada e Saída.

Os placeholders em C# são representados por {} e contém um índice(Baseado em zero) que define qual valor ou argumento será inserido ou susbstituído no local.

Sintaxe
"{indice}"
Onde
indice: índice do argumento
Exemplo 1
//main.cs
using System;
					
public class Program
{
	public static void Main()
	{
		Console.WriteLine("{0} {1} {2}", "string",1.99,-1); //indices ordenados
        Console.WriteLine("{2} {1} {0}", "string",1.99,-1); //indices fora de ordem
	}
}
Saída
string 1.99 -1
-1 1.99 string

A formatação utilizando caracteres de escape foi visto em C# Básico: Entrada e Saída.

Exemplo 2
//main.cs
using System;
					
public class Program
{
	public static void Main()
	{
		Console.WriteLine("{0}\n{1}\n{2}", "string",1.99,-1); //uso de \n
	}
}
Saída
string
1.99
-1

Quando precisamos formatar uma string, podemos utilizar também o método Format da classe System.Format. Esse método retorna uma string formatada com valores passados como argumento.

Sintaxe
string String.Format(string_placeholder, lista_valores)
Onde
string_placeholder: string contendo placeholders com índices e formatações
lista_valores: lista de valores ou variáveis para formatação
Exemplo 3
//main.cs
using System;
					
public class Program
{
	public static void Main()
	{
		string str = "{0} {1} {2}";
		string formtada = String.Format(str, "string",1.99,-1);
		Console.WriteLine("{0} {1} {2}", "string",1.99,-1);
	}
}
Saída
string 1.99 -1

A linguagem C# permite o uso de interpolação de strings. Na interpolação, utilizamos nomes de variáveis como placeholder que posteriormente são substituídos pelo valores contidos nas variáveis. Uma string interpolada é identificada pelo prefixo "$".

Sintaxe
$"{expressao}"
Onde
expressao: variavel, atributo/propriedade, expressão
Exemplo 4
using System;
					
public class Program
{
	public static void Main()
	{
		string var1 = "string";
		float var2 = 1.99f;
		int var3 = -1;
		
		Console.WriteLine($"{var1} {var2} {var3}");
		Console.WriteLine($"{var1+var1} {var2*2} { {var3 > 0}}");
	}
}
Saída
string 1.99 -1
stringstring 3.98 -1 False

As string literais em C# são string que seu conteúdo é interpretado da forma que são declaradas, sem que os caracteres de escape ou outros sejam interpretados. Um string literal é identificada utilizando o prefixo @.

Sintaxe
@"conteudo_string"
Exemplo 5
using System;
					
public class Program
{
	public static void Main()
	{
		Console.WriteLine(@"uma \n string \t literal em C#");
	}
}
Saída
uma \n string \t literal em C#

Utilizando os placeholders, podemos adicionar alinhamento e formato para os valores que serão inseridos em seus locais.

Sintaxe
{indice [,alinhamento|tamanho]:formato}
Onde
indice: índice do valor
alinhamento: (-) Alinhamento à esquerda. O alinhamento padrão é à direita. 
tamanho: número de dígitos para o tamanho do valor
formato: identificador de formato
Exemplo 6
using System;
public class Program
{
	public static void Main()
	{
	    Console.WriteLine("{0,-8:D}", 10); //decimal. Alinhamento à esquerda
	    Console.WriteLine("{0,-8:F}", 10); //float. Alinhamento à esquerda
		Console.WriteLine("{0,8:X}", 10); //hexadecimal. Alinhamento à direita
	}
}
Saída
10      
10.00   
       A

Quando definimos o tamanho de um campo com alinhamento à direita ou esquerda, podemos preencher os espaços com determinado caractere. Para isso, utilizamos os métodos PadLeft(Esquerda) e PadRight(Direita) da classe String.

Sintaxe
public string PadLeft(int totalWidth, char paddingChar);
public string PadRight(int totalWidth, char paddingChar);
Onde
totalWidth: tamanho do campo
paddingChar: caracter para preenchimento. Opcional, padrão espaço em branco
Exemplo 7
//main.cs
using System;
					
public class Program
{
	public static void Main()
	{
	    int val = 100;
		Console.WriteLine("{0}",val.ToString().PadLeft(8,'-') ); 
		Console.WriteLine("{0}",val.ToString().PadRight(8,'*') ); 
	}
}
Saída
-----100
100*****

Para a formatação de números utilizamos seus identificadores de formatação em conjuntos com placeholders. Anteriormente, vimos os identificadores D e X para exibir números em base 10 e hexadecimal. Abaixo vamos estudar outros identificadores.

Sintaxe
{indice: identificador[digitos]}
Onde
indice: índice do valor a ser exibido
identificador: identificador de formatação
digitos: número de dígitos para exibição
Tab 1.: Indentificadores
Caracter Descrição
c/C Monetário
d/D Decimal
e/E Exponencial
f/F Ponto-Flutuante
g/G -
n/N Número
p/P Porcentagem
x/X Hexadecimal
Exemplo 8
using System;
					
public class Program
{
	public static void Main()
	{
		Console.WriteLine("{0:C}",10.50); 
		Console.WriteLine("{0:D}",256); 
		Console.WriteLine("{0:E}",100); 
		Console.WriteLine("{0:F}",1.99); 
		Console.WriteLine("{0:G}",1.99); 
		Console.WriteLine("{0:N2}",10.1234); 
		Console.WriteLine("{0:P2}",0.15); 
		Console.WriteLine("{0:X8}",0xabcd); 
	}
}
Saída
$10.50
256
1.000000E+002
1.99
1.99
10.12
15.00%
0000ABCD

O identificador c/C leva em consideração a cultura da máquina onde o programa está executando. A saída pode variar de acordo com a cultura.

Para a formatação de datas, utilizamos seus identificadores de formatação em conjuntos com placeholders. Na tabela abaixo vamos estudar os identificadores para formatação de datas.

O tipo de dados DateTime pode ser visto em Classes Nativas: Date com mais detalhes.

Sintaxe
{indice: ii}
{indice: iiii}
Onde
indice: índice do valor a ser exibido
i: digitos do identificador. Ex: dd, MM, yyyy
Tab 2.: Indentificadores
Caracter Descrição
d Dia
M Mês
y Ano
h/H 12/24 horas
H Horas
m Minutos
s Segundos
Exemplo 8
using System;
					
public class Program
{
	public static void Main()
	{
	    DateTime dt = DateTime.Now; //recuperar data/hora corrente
		Console.WriteLine("{0:dd}",dt); //dia
		Console.WriteLine("{0:MM}",dt); //mes
		Console.WriteLine("{0:yyyy}",dt); //ano
		Console.WriteLine();
		Console.WriteLine("{0:MMM}",dt); //mes abreviado
		Console.WriteLine("{0:MMMM}",dt); //mes completo
		Console.WriteLine();
		Console.WriteLine("{0:HH}",dt); //horas. formato 24h
		Console.WriteLine("{0:mm}",dt); //mins
		Console.WriteLine("{0:ss}",dt); //segs
	}
}
Saída
04
04
2023

Apr
April

12
04
26

O identificadores leva em consideração a cultura da máquina onde o programa está executando. A saída pode variar de acordo com a cultura.

  1. 05/08/2025 - revisão 2 - Correções: pontuais, 'Objetivos', sintaxes e navegação 'Próximo'
  2. 14/10/2024 - revisão 1 - Correções pontuais
  3. 12/03/2024 - versão inicial