Cadeia de caracteres C#

Resumo : neste tutorial, você aprenderá sobre o tipo de string C# e as operações básicas de string.

Introdução à string C#

C# usa a stringpalavra-chave para representar o tipo de string. A stringpalavra-chave é um alias para o System.Stringtipo. Portanto, os stringe Stringsão equivalentes.

Declarar uma string

O exemplo a seguir declara uma variável string sem inicializá-la:

string message;Linguagem de código:  C#  ( cs )

Depois de declarar a variável string, você pode atribuir a ela um literal de string. Para formar uma string literal, coloque o texto da string entre aspas duplas ( "..."). Por exemplo:

message = "Hi";Linguagem de código:  C#  ( cs )

O exemplo a seguir declara e inicializa a string usando uma instrução:

string message = "Hi";Linguagem de código:  C#  ( cs )

Para criar uma string de comprimento zero, você usa o String.Emptyseguinte:

string message = String.Empty;Linguagem de código:  C#  ( cs )

É equivalente ao seguinte:

string message  = "";Linguagem de código:  C#  ( cs )

Obtenha o comprimento de uma string

Uma string possui a Lengthpropriedade que retorna o comprimento de uma string. Para acessar a Lengthpropriedade, você usa o operador ponto ( .) assim:

string message = "Hello";

Console.WriteLine(message.Length);Linguagem de código:  C#  ( cs )

Saída:

5Linguagem de código:  C#  ( cs )

Concatenar duas strings

Para concatenar duas strings em uma, você usa o +operador. Por exemplo:

string message = "Good" + " Morning";

Console.WriteLine(message);Linguagem de código:  C#  ( cs )

Saída:

Good Morning!Linguagem de código:  C#  ( cs )

Para anexar uma string a outra, você também pode usar o +=operador. Por exemplo:

string message = "Good";
message += " Morning!";

Console.WriteLine(message);Linguagem de código:  C#  ( cs )

Saída:

Good Morning!Linguagem de código:  C#  ( cs )

A String fornece um Join()método que permite concatenar duas ou mais strings em uma única string usando um separador.

Além do +operador, você pode usar o método Concat() para concatenar duas ou mais strings em uma string.

A string C# é imutável

A string C# é imutável. Isso significa que quando você faz alterações em uma string, você sempre obterá uma nova string. Por exemplo:

string message = "C#";
message += " string";

Console.WriteLine(message);Linguagem de código:  C#  ( cs )

Saída:

C# stringLinguagem de código:  C#  ( cs )

Neste exemplo:

  • Primeiro, defina a messagevariável string e inicialize-a com a string literal "C#".
  • Segundo, concatene a messagevariável string com outra string literal " string!".
  • Terceiro, mostre a messagestring para o console.

Ao concatenar o messagecom o " string", o C# não altera a string original message, mas cria uma nova string que contém a string concatenada.

Acessando caracteres individuais

Internamente, C# armazena uma string como uma coleção de caracteres somente leitura. Para acessar um caractere individual em uma string, você usa a notação de colchetes []com um índice:

s[index]Linguagem de código:  C#  ( cs )

O primeiro caractere possui índice 0. O segundo caractere possui índice 1 e assim por diante. Por exemplo:

string message = "Hello";

Console.WriteLine(message[0]); // HLinguagem de código:  C#  ( cs )

Saída:

HLinguagem de código:  C#  ( cs )

Como uma string é imutável, você só pode ler caracteres individuais dela.

O exemplo a seguir resulta em um erro de compilação porque tenta alterar o primeiro caractere de uma string:

string name = "Jill";
name[0] = 'B';Linguagem de código:  C#  ( cs )

Sequências de escape

Uma string literal pode conter caracteres especiais como tabulações e novas linhas,… usando uma barra invertida ( \). Eles são chamados de sequências de escape. Por exemplo:

string header = "id\tname";

Console.WriteLine(header);Linguagem de código:  C#  ( cs )

Saída:

id      nameLinguagem de código:  C#  ( cs )

A headerstring tem o \tcaractere como caractere de tabulação. Portanto, quando o exibimos no console, a saída possui um caractere de tabulação entre o id e o nome.

Se uma string literal contiver aspas duplas, você precisará usar o caractere de barra invertida \para escapar delas. Por exemplo:

string message = "\"C# is awesome\". They said";
Console.WriteLine(message);Linguagem de código:  C#  ( cs )

Saída:

"C# is awesome". They said.Linguagem de código:  C#  ( cs )

Neste exemplo, a string literal contém duas aspas duplas:

"C# is awesome". They said.Linguagem de código:  C#  ( cs )

Portanto, usamos o caractere de barra invertida (\) para escapar de cada um deles:

"\"C# is awesome\". They said."Linguagem de código:  C#  ( cs )

Se uma string contém o caractere de barra invertida como um caractere literal, você precisará usar outro caractere de barra invertida para escapar desta forma:

string path = "C:\\users\\";

Console.WriteLine(path);Linguagem de código:  C#  ( cs )

Saída:

C:\users\Linguagem de código:  C#  ( cs )

Neste exemplo, a string “C:\users\” do caminho do diretório contém as barras invertidas. Portanto, precisamos escapar deles usando barras invertidas.

Sequência literal

Se uma string contiver barras invertidas, você poderá escapar delas usando barras invertidas. Mas barras invertidas duplas dificultam a leitura da string.

Para corrigir isso, você pode transformar uma string literal em uma string literal prefixando o @símbolo. A string literal desativa caracteres de escape para que uma barra invertida seja uma barra invertida. Por exemplo:

string path = @"C:\users\";

Console.WriteLine(path);Linguagem de código:  C#  ( cs )

Saída:

C:\users\Linguagem de código:  C#  ( cs )

Como as strings literais preservam caracteres de nova linha como parte do texto da string, você pode usá-las para criar strings multilinhas. Por exemplo:

string content = @"I'm a multiline 
string that span multiple 
lines";

Console.WriteLine(content);Linguagem de código:  C#  ( cs )

Saída:

I'm a multiline
string that span multiple
linesLinguagem de código:  C#  ( cs )

String interpolada

Suponha que você tenha uma variável chamada name:

string name = "Joe";Linguagem de código:  C#  ( cs )

E você deseja incorporar a variável em uma string literal.

Para fazer isso, você prefixa a string literal com o $caractere e coloca a variável entre chaves {}:

string name = "Joe";
string greeting = $"Hello {name}!";

Console.WriteLine(greeting);Linguagem de código:  C#  ( cs )

Saída:

Hello Joe!Linguagem de código:  C#  ( cs )

Uma string literal com o prefixo $ é uma string interpolada.

Ao encontrar o $prefixo, o compilador substitui a {name}variável pelo seu valor. Esse recurso é chamado de interpolação de string.

Sequências UTF-8

A web usa UTF-8 como codificação de caracteres. Cada caractere ocupa de 1 a 4 bytes.

Mas no .NET, o tipo string usa UTF-16 por padrão. Isso significa que cada caractere ocupa pelo menos 2 bytes de tamanho.

Se você usar C# para processar caracteres para a Web, será necessário converter UTF-16 em UTF-8.

Observe que se você usar o ASP.NET Core, a estrutura fará a conversão automaticamente para você.

Para converter uma string de UTF-16 em UTF-8, use o seguinte:

var utf8 = Encoding.UTF8.GetBytes("Hello WWW");Linguagem de código:  JavaScript  ( javascript )

Esta conversão manual cria uma grande sobrecarga e torna o programa mais lento.

Para resolver esse problema, o C# 11 introduziu o conceito de string UTF-8. Uma string UTF-8 tem um sufixo u8assim:

var utf8 = "Hello WWW"u8;Linguagem de código:  JavaScript  ( javascript )

A sintaxe de string utf-8 traz não apenas uma sintaxe elegante, mas também é mais eficiente do que converter uma string de UTF-16 para UTF-8.

Observe que o C# 11 também introduziu o conceito de strings brutas que abordaremos em outro tutorial.

Resumo

  • C# usa a stringpalavra-chave para representar o tipo de string.
  • A stringpalavra-chave é um alias para o System.Stringtipo. Portanto, stringe Stringsão iguais.
  • Strings C# são imutáveis.
  • Use a Lengthpropriedade para obter o comprimento da string.
  • Use o +operador para concatenar duas strings e retornar uma nova string.
  • Use o colchete com um índice para acessar um caractere individual em uma string.
  • Use uma string literal com o @prefixo para desabilitar o caractere de escape para que as barras invertidas não tenham nenhum significado especial.
  • Use uma string interpolada com o $prefixo para incorporar uma variável em uma string literal.
  • Use o u8sufixo para criar uma string literal com codificação UTF-8.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *