Facebook Pixel
Interpolação, Verbatim String Literals, Múltiplas Linhas – Tudo Sobre Strings no C#

Interpolação, Verbatim String Literals, Múltiplas Linhas – Tudo Sobre Strings no C#

A linguagem C# faz o tratamento de strings levando em consideração Escape Codes, que são códigos precedidos pelo caracter “\”. Desta forma temos que:

C#

Se quisermos inserir um texto com múltiplas linhas em uma variável, temos que recorrer a um recurso como:

C#

Observe que, apesar de escrita em três linhas, foi gerada uma string concatenada com uma única linha. Para que a variável armazene o texto em múltiplas linhas teria que se colocar “\n” nos pontos onde se deseja fazer as quebras.

Alguns escape codes mais comuns:

\' = '
\" = "
\\ = \
\n = New Line (chr(13)+chr(10))
\t = Tab
\u = Unicode Character UTF-16 (exemplo: \u00e7 = ç)
\U = Unicode Character UTF-32 (exemplo: \U0001F47D = "👽")
\x = Mesmo que \u com tamanho variável (exemplo: \x00E7 or \x0E7 or \xE7 = "ç")
\b = Backspace
\0 = Null
\a = Alert
\e = Escape
\f = Form Feed
\r = Carriage Return (chr(13))
\v = Vertical Tab

Mas é possível escrever strings literais em C#, que não seguem a metodologia de escape codes e vamos abordar todas as formas neste artigo.

Então agora vamos aprender como manipular strings no C# de forma mais eficiente:

Comentários

Vamos começar pelo mais básico, como escrever comentários dentro de um código C#.

  • Linhas de comentário são precedidas por duas barras “//”.
  • Se o comentário tiver múltiplas linhas, inicie com “/*” e termine com “*/”.
  • É possível também utilizar “/*” e “*/” para inserir um comentário no meio do código.
C#

Eu falo um pouco mais sobre documentação XML neste artigo.

Interpolação

Interpolação é o recurso que nos permite inserir tokens no meio da string que serão substituídos em tempo de execução:

  • A string deve ser precedida por “$”.
  • As variáveis que serão interpoladas devem estar {entre chaves}.
  • As conversões dos tipos para string acontecem de forma implícita.
C#

Para caracterizar que vai utilizar interpolação a string deve iniciar com “$”. Não pode haver espaço entre $ e as aspas. As variáveis ficam entre chaves, conforme exemplo da linha 12 acima:

string temp = $"Nome: {Nome}, Idade: {Idade} anos. Enviado às {Agora:HH:mm} Horas.";

Sintaxe:
{<ExpressãoDeInterpolação>[,<Alinhamento>][:<Formato>]}

  • ExpressãoDeInterpolação: Expressão que produz o resultado a ser formatado. Quando nulo retorna string vazia.
  • Alinhamento: Inteiro que representa a quantidade mínima de caracteres deve ter o resultado. Quando positivo, alinha pela direita, quando negativo alinha pela esquerda.
  • Formato: Formatação que será aplicada. Para detalhes, veja este artigo em Microsoft Learn.

Operações utilizando strings interpoladas:

C#

Se precisar escrever tokens {x} dentro de uma string interpolada, basta aumentar o número de $ no início da string. A quantidade de $ será o indicativo de quantas chaves são necessárias para caracterizar um token de de interpolação.

C#

Uma constante pode conter elementos interpolados, desde que esses elementos também sejam constantes:

C#

String Literals

Para escrever strings no C# sem levar em consideração os escape codes é necessário recorrer às string literals. Dessa forma é possível até mesmo escrever strings com múltiplas linhas de forma bem mais visualmente amigável. Existem dois tipos: Verbatim String Literals e Raw String Literals, sendo que a segunda possui mais recursos.

Verbatim String Literals

Uma Verbatim String Literal é caracterizada pelo @ no início da formação. Pode ser em qualquer ordem @” ou “@.
Exemplo mostrando a mesma string escrito da forma padrão e da forma Verbatim:

string temp1 = "C:\\Temp\\Aula1";
string temp2 = @"C:\Temp\Aula1";

// O conteúdo das duas strings é:
C:\Temp\Aula1

O único código especial dentro de uma Verbatim string é “, que deve ser representado como “”.

string temp = @"O nome do livro é ""João e Maria"".";

É possível também utilizar comandos do C# com o identificador Verbatim. No exemplo abaixo, vou criar um objeto com o nome for e outro com o nome if:

string[] @for = {"VW","Audi","Porsche"};
string @if = "Mercedes-Benz";

E ainda podemos utilizar um recurso interessante de interpolação utilizando o código acima, dessa forma:

C#

Usando Verbatim Literals para escrever uma string multi-linhas:

C#

Raw String Literals

É outra forma de escrever strings de forma literal, sem os escape codes, porém de uma forma ainda mais amigável que Verbatim String Literals. Uma Raw String Literal deve estar contida entre, no mínimo 3 aspas. Dessa forma:

string temp = """Isso é uma raw string que pode conter \ e "".";
// Resultado de temp:
Isso é uma raw string que pode conter \ e ".

Se precisar escrever aspas duplas ou triplas, basta aumentar o número de aspas que delimita a raw string, por exemplo:

string temp = """"Essa raw string tem "" em seu conteúdo."""";
// Resultado de temp:
Essa raw string tem "" em seu conteúdo.

Raw strings também podem ser combinadas com interpolação:

C#

Mas as raw strings se destacam mesmo na hora de escrever strings com múltiplas linhas porque, ao contrário das verbatim strings, que fazem uma bagunça com a identação, as raw strings fazem um belo controle deste recurso, por exemplo:

C#

Vai gerar o seguinte resultado em sqlCmd:

SQL

Observe que:

  • A primeira e a última quebra de linha foram suprimidas, mantendo apenas o conteúdo contido entre os delimitadores da raw string.
  • Os espaços de identação também foram suprimidos, mantendo a identação apenas no código, para melhor organização porém eliminando-a no resultado final.
  • A string começa e termina com quebras de linha.
  • Espaços em branco após as aspas de abertura, na primeira linha são ignorados.
  • Linhas vazias no conteúdo da raw strings são respeitadas.
  • Se as aspas de fechamento não estiverem seguindo o padrão de identação, a string será interpretada como uma verbatim string.

Se achou este conteúdo relevante, considere assinar este blog preenchendo seu e-mail abaixo, ou deixando um comentários lá no final.

Deixe seu comentário