Swift: Strings e Caracteres do Swift

Strings são o tipo de dado mais usado no desenvolvimento diário. Esta lição oferece um tour completo pelas operações de String e Character no Swift.

1. O Que Você Vai Aprender


2. Uma História Real: Um Especialista em Operações com Clientes

(1) O Problema: A Concatenação Manual de Templates de Email Era Lenta e Propensa a Erros

Charlie é especialista em operações com clientes em uma empresa SaaS, enviando emails personalizados para mais de 2.000 clientes toda semana. Ele começou usando sinais de mais para concatenar strings:

SWIFT
let firstName = "Alice"
let lastName = "Johnson"
let product = "Premium Plan"
let price = "299.00"
let email = "Dear " + firstName + " " + lastName + ",\n\nThank you for purchasing " + product + "!\nYour payment: $" + price + ".\n\nBest regards,\nCharlie"

O código era longo e difícil de manter. Qualquer mudança no formato do template significava reescrever tudo. Na semana passada, ele acidentalmente enviou "Prezado(a) AliceJohnson" (faltando um espaço) para mais de 300 clientes.

(2) A Solução: Interpolação de String

Charlie mudou para a sintaxe de interpolação de string do Swift, e o template ficou limpo e legível:

SWIFT
let firstName = "Alice"
let lastName = "Johnson"
let product = "Premium Plan"
let price = "299.00"
let email = """
Dear \(firstName) \(lastName),

Thank you for purchasing \(product)!
Your payment: $\(price).

Best regards,
Charlie
"""
print(email)

Saída:

TEXT 📖 Somente leitura
Prezado(a) Alice Johnson,

Obrigado por adquirir o Plano Premium!
Seu pagamento: R$299.00.

Atenciosamente,
Charlie

(3) O Resultado: A Manutenibilidade do Código do Template Melhorou

Dimensão Antes (Concatenação) Depois (Interpolação)
Código por email 8 linhas de concatenação + escape 4 linhas de interpolação
Tempo de edição do template 5-10 minutos 30 segundos
Taxa de erro 3-5 por mês 0
Legibilidade Símbolos misturados, extremamente difícil de revisar Quase texto simples

3. Criando e Concatenando Strings

O tipo String do Swift é poderoso e oferece várias maneiras de criar e manipular strings.

(1) Literais de String

Crie strings envolvendo texto em aspas duplas. O Swift suporta Unicode, incluindo emojis:

SWIFT
let greeting = "Hello, Swift!"
let empty = ""           // Empty string
let emoji = "🚀"         // Unicode support
Método de Criação Sintaxe Descrição
Literal let s = "Olá" Mais comum
String vazia let s = "" String vazia
Inicializador String() Cria uma string vazia
Repetição String(repeating: "!", count: 3) "!!!"
100%
graph LR
    A[Criação de String] --> B["Literal: \"Olá\""]
    A --> C["Inicializador: String()"]
    A --> D["Repetição: repeating count"]
    A --> E["Concatenação: +"]
    A --> F["Interpolação: \\(valor)"]

(2) Concatenação de String

Use + ou += para concatenar strings, ou o método append:

SWIFT
let firstName = "Alice"
let lastName = "Johnson"
// Using + for concatenation
let fullName = firstName + " " + lastName
print(fullName)  // Alice Johnson
// Using += to append
var message = "Hello"
message += ", "
message += firstName
print(message)  // Hello, Alice
// Using the append method
var greeting2 = "Welcome"
greeting2.append("!")
print(greeting2)  // Welcome!

▶ Exemplo: Gerador de Endereços de Email

SWIFT
// ============================================
// Generate email addresses from user info
// Demonstrates string creation and concatenation
// ============================================
let domain = "@example.com"
let alice = "alice.johnson"
let bob = "bob.smith"
let charlie = "charlie.brown"
let email1 = alice + domain
let email2 = bob + domain
let email3 = charlie + domain
print(email1)
print(email2)
print(email3)
// Build a full URL
let scheme = "https://"
let site = "api."
let fullURL = scheme + site + domain
print("API URL: \(fullURL)")

Saída:

TEXT 📖 Somente leitura
alice.johnson@example.com
bob.smith@example.com
charlie.brown@example.com
API URL: https://api.example.com

4. Interpolação de String e Métodos Comuns

A interpolação de string é um dos recursos de string mais poderosos do Swift, permitindo incorporar variáveis, expressões e até chamadas de função diretamente em strings.

(1) Interpolação de String

Use a sintaxe \(expressao) para incorporar qualquer valor em uma string:

SWIFT
let name = "Alice"
let age = 28
let height = 1.75
let intro = "My name is \(name), I am \(age) years old and \(height) meters tall."
print(intro)
// My name is Alice, I am 28 years old and 1.75 meters tall.
// Expressions inside interpolation
let price = 29.99
let qty = 3
let summary = "Total: $\(price * Double(qty))"
print(summary)
// Total: $89.97
Conteúdo da Interpolação Sintaxe Resultado
Variável \(nome) O valor da variável
Expressão \(preco * 0.9) Resultado calculado
Chamada de método \(nome.uppercased()) Valor de retorno do método
Múltiplos valores \(a) + \(b) = \(a + b) Incorporados um por um

(2) Métodos Comuns de String

A String do Swift fornece um rico conjunto de métodos embutidos:

SWIFT
let text = "Hello, Swift!"
text.count                     // 13 (character count)
text.isEmpty                   // false
text.hasPrefix("Hello")        // true
text.hasSuffix("Swift!")       // true
text.uppercased()              // "HELLO, SWIFT!"
text.lowercased()              // "hello, swift!"
text.contains("Swift")         // true
Método O Que Faz Exemplo Resultado
count Número de caracteres "Olá".count 3
isEmpty Se está vazia "".isEmpty true
hasPrefix Se começa com um prefixo "Swift".hasPrefix("Sw") true
hasSuffix Se termina com um sufixo "Swift".hasSuffix("ft") true
uppercased Converte para maiúsculas "Swift".uppercased() "SWIFT"
lowercased Converte para minúsculas "Swift".lowercased() "swift"
contains Se contém uma substring "Olá".contains("lá") true

▶ Exemplo: Cartão de Informações do Usuário

SWIFT
// ============================================
// Generate a formatted user info card
// Demonstrates string interpolation and common methods
// ============================================
let firstName = "Alice"
let lastName = "Johnson"
let email = "alice.johnson@example.com"
let role = "Admin"
// Use interpolation to combine info
let displayName = "\(firstName) \(lastName)"
let emailDomain = email.contains("@") ? email.split(separator: "@")[1] : "unknown"
// Validate format
let isValidEmail = email.contains(".") && email.contains("@")
let isAdmin = role.uppercased() == "ADMIN"
print("=== User Card ===")
print("Name: \(displayName)")
print("Email: \(email)")
print("Domain: \(emailDomain)")
print("Valid Email: \(isValidEmail)")
print("Admin: \(isAdmin)")
print("Name Length: \(displayName.count) chars")

Saída:

TEXT 📖 Somente leitura
=== User Card ===
Name: Alice Johnson
Email: alice.johnson@example.com
Domain: example.com
Valid Email: true
Admin: true
Name Length: 13 chars

5. Strings Multilinha e Character

O Swift fornece sintaxe de aspas triplas para strings multilinha, e o tipo Character representa um único caractere.

(1) Strings Multilinha

Use três aspas duplas """ para envolver o conteúdo, preservando quebras de linha e indentação:

SWIFT
let poem = """
Roses are red,
Violets are blue,
Swift is awesome,
And so are you!
"""
print(poem)

Saída:

TEXT 📖 Somente leitura
Roses are red,
Violets are blue,
Swift is awesome,
And so are you!

Regras de indentação para strings multilinha: a posição do """ de fechamento determina quantos espaços em branco iniciais são removidos de cada linha:

SWIFT
let indented = """
    Line 1
    Line 2
    """
// The 4 leading spaces on each line are stripped
Característica String de Linha Única String Multilinha
Sintaxe "..." """..."""
Quebras de linha Deve escrever \n Quebras de linha diretas
Aspas Deve escapar \" Pode escrever " diretamente
Indentação Nenhuma Baseada no delimitador de fechamento

(2) O Tipo Character

Um Character representa um único caractere visível (escalar Unicode). Uma string é composta por múltiplos Characters:

SWIFT
let ch: Character = "A"
let emoji: Character = "🌟"
// Iterate over each character in a string
let greeting = "Hi!"
for char in greeting {
    print(char)
}
// Output: H  i  !

▶ Exemplo: Formatação de Texto

SWIFT
// ============================================
// Generate a formatted product description
// Demonstrates multiline strings and Character iteration
// ============================================
let productName = "Swift Pro"
let version = "2.0"
let features = ["Fast", "Safe", "Modern", "Open Source"]
// Use a multiline string to build the product description
let description = """
Product: \(productName)
Version: \(version)
Features:
  - \(features[0])
  - \(features[1])
  - \(features[2])
  - \(features[3])
"""
print(description)
// Iterate over each character in the product name
print("Product name characters:")
for ch in productName {
    print("[\(ch)]", terminator: " ")
}
print()

Saída:

TEXT 📖 Somente leitura
Product: Swift Pro
Version: 2.0
Features:
  - Fast
  - Safe
  - Modern
  - Open Source
Product name characters:
[S] [w] [i] [f] [t] [ ] [P] [r] [o]

6. Exemplo Completo: Gerador de Email para Clientes

SWIFT
// ============================================
// Customer email generator
// Demonstrates concatenation, interpolation, multiline, and methods
// ============================================
import Foundation
// 1. Customer data
let customerName = "Charlie Brown"
let projectName = "DataSync Pro"
let dueDate = "2026-08-15"
let amount = 2499.00
// 2. Email subject
let subject = "Invoice for \(projectName) - Due \(dueDate)"
print("Subject: \(subject)")
print(String(repeating: "=", count: subject.count + 10))
// 3. Email body (multiline string + interpolation)
let body = """
Dear \(customerName),

Thank you for choosing \(projectName).

Invoice Summary:
  - Project: \(projectName)
  - Amount: $\(String(format: "%.2f", amount))
  - Due Date: \(dueDate)

Please make the payment by \(dueDate).
If you have any questions, feel free to reply.

Best regards,
Swift Tech Team
"""
print(body)
// 4. Email validation
let isValidSubject = subject.hasPrefix("Invoice")
let containsProjectName = body.contains(projectName)
let isFormatted = body.hasSuffix("Team\n")
print("=== Validation ===")
print("Valid Subject: \(isValidSubject)")
print("Contains Project: \(containsProjectName)")
print("Proper Formatting: \(isFormatted)")
print("Body Length: \(body.count) chars")

Saída:

TEXT 📖 Somente leitura
Assunto: Fatura para DataSync Pro - Vencimento 2026-08-15
==============================================
Prezado(a) Charlie Brown,

Obrigado por escolher o DataSync Pro.

Resumo da Fatura:
  - Projeto: DataSync Pro
  - Valor: R$2499.00
  - Data de Vencimento: 2026-08-15

Por favor, efetue o pagamento até 2026-08-15.
Se tiver alguma dúvida, fique à vontade para responder.

Atenciosamente,
Equipe Swift Tech

=== Validação ===
Assunto Válido: true
Contém Projeto: true
Formatação Adequada: true
Tamanho do Corpo: 278 caracteres

❓ Perguntas Frequentes

P: O que é mais rápido, interpolação de string ou concatenação com sinal de mais? R: A interpolação tem desempenho ligeiramente melhor. O compilador otimiza a interpolação em chamadas append internamente, enquanto múltiplas concatenações criam strings intermediárias. No desenvolvimento diário, a diferença é insignificante — priorize a legibilidade. P: Como a indentação é calculada em strings multilinha? R: O """ de fechamento serve como linha de base. O número de caracteres de espaço em branco antes do delimitador de fechamento é removido do início de cada linha de conteúdo. Se uma linha tiver menos indentação que o delimitador, nenhuma indentação é removida dessa linha. P: Qual é a diferença entre Caractere e String? R: Caractere representa um único caractere visível (escalar Unicode), enquanto String é uma coleção de vários Caracteres. Uma String pode consistir de 0 a muitos caracteres. P: A String do Swift é um tipo por valor ou tipo por referência? R: String é um tipo por valor (struct). Cada atribuição ou passagem de parâmetro cria uma cópia, mas o Swift usa otimização copy-on-write, então só copia de fato quando ocorre uma mutação, mantendo a sobrecarga mínima.


📖 Resumo


📝 Exercícios

  1. Iniciante: Use interpolação de string para gerar a frase: "Meu nome é X, tenho Y anos." Armazene o nome e a idade em variáveis.
  2. Intermediário: Escreva um programa para validar um endereço de email inserido pelo usuário. Requisitos: contém @ e ., comprimento maior que 5, exiba em minúsculas.
  3. Desafio: Use uma string multilinha para gerar um template de email HTML com cabeçalho, corpo e rodapé, incorporando o nome do usuário, nome do produto e preço via interpolação.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%