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. Alinhamento e formato
  5. Preenchimento à direita ou esquerda
  6. Formatando números
  7. Formatando data
  8. Formatando moeda
  9. 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. Esses placeholders são informados dentro de strings para formatação.

Esses placeholders são informados dentro de strings para formatação que por sua vez são argumentos para métodos de saída de dados como Write e WriteLine.

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 placeholders que posteriormente são substituídos pelo valores contidos nas variáveis ou expressões. Uma string interpolada é identificada pelo prefixo "$".

A string interpolada com os placeholders é passada como argumento para métodos de saída de dados como Write e WriteLine.

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

Utilizando os placeholders, podemos adicionar alinhamento e formato para os valores que serão inseridos em seus locais de acordo com a sintaxe abaixo:

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 um 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 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 local 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 dado DateTime pode ser visto em Classes Nativas: Date com mais informações.

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. 16/07/2026 - revisão 4 - Ajustes: objetivos, intro, outros ajustes pontuais
  2. 16/06/2026 - revisão 3 - Correção: string literal/raw movido para string
  3. 05/08/2025 - revisão 2 - Correções: pontuais, 'Objetivos', sintaxes e navegação 'Próximo'
  4. 14/10/2024 - revisão 1 - Correções pontuais
  5. 12/03/2024 - versão inicial