Uma string representa dados textuais.
Em Swift, uma String é uma coleção ordenada de valores Character, em que cada caractere representa um caractere Unicode.
Você cria uma string usando um literal de string, que é uma sequência de caracteres cercada por aspas duplas (").
Para strings de várias linhas, use três aspas duplas ("""):
let hello: String = "Hello, World!"
let poem: String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""
As strings do Swift se conectam de forma transparente com a classe NSString do framework Foundation, dando acesso a amplos recursos de processamento de texto.
Um Character representa um único cluster de grafemas estendido, um caractere legível por humanos composto de um ou mais valores escalares Unicode.
Um valor escalar Unicode é um ponto de código de 21 bits no intervalo de U+0000 a U+D7FF, inclusive, ou de U+E000 a U+10FFFF, inclusive.
let aChar: Character = "A"
Quando você escreve um literal de string, o Swift infere automaticamente que o tipo dele é String.
Para armazenar um único caractere como Character, você precisa fornecer uma anotação de tipo explícita:
let aString = "A" // Inferred as String
let aChar: Character = "A" // Explicitly typed as Character
print(type(of: aString)) // Prints String
print(type(of: aChar)) // Prints Character
// The following code will not compile:
let badChar: Character = "Too many characters"
// Error: Cannot convert value of type 'String' to specified type 'Character'
Você pode juntar strings usando o operador de adição (+):
print("honey" + "comb")
// Prints "honeycomb"
Você não pode concatenar um Character diretamente a uma String usando + sem antes converter o caractere em uma string.
No entanto, você pode usar o método append(_:) para acrescentar uma string ou um caractere diretamente a uma string mutável:
var greeting = "Hello"
let world = ", world"
let period: Character = "."
greeting.append(world)
print(greeting) // Prints "Hello, world"
greeting.append(period)
print(greeting) // Prints "Hello, world."
A interpolação de strings permite construir uma string embutindo constantes, variáveis, literais e expressões dentro de literais de string.
Coloque cada expressão entre parênteses precedidos por uma barra invertida (\( ... )):
let radius = 5.0
let circle = "The area of a circle with radius \(radius) is \(Double.pi * radius * radius)"
print(circle) // Prints "The area of a circle with radius 5.0 is 78.53981633974483"
Strings e caracteres oferecem várias propriedades para inspecionar seu conteúdo.
As propriedades de string mais comuns incluem:
| Propriedade | Descrição | Exemplo |
|---|---|---|
isEmpty |
Retorna true se a string não tiver caracteres |
"Hello".isEmpty resulta em false
|
count |
Retorna o número de caracteres na string |
"Hello".count resulta em 5
|
Para uma lista completa de propriedades, consulte a documentação de String da Apple.
As propriedades de caractere mais comuns incluem:
| Propriedade | Descrição | Exemplo |
|---|---|---|
isLowercase |
Retorna true se o caractere for minúsculo |
"a".isLowercase resulta em true
|
isUppercase |
Retorna true se o caractere for maiúsculo |
"A".isUppercase resulta em true
|
isNumber |
Retorna true se o caractere for um dígito |
"1".isNumber resulta em true
|
isWhitespace |
Retorna true se o caractere for um espaço em branco |
" ".isWhitespace resulta em true
|
Para uma lista completa de propriedades, consulte a documentação de Character da Apple.
Você pode converter outros tipos em strings usando o inicializador String(_:), que dá suporte a tipos padrão como Int, Double e Character:
let charX: Character = "x"
print(String(charX)) // Prints "x"
print(String(110)) // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"
Literais de string do Swift dão suporte a várias sequências de escape para caracteres especiais:
| Sequência | Descrição |
|---|---|
\0 |
Caractere nulo |
\\ |
Barra invertida |
\t |
Tabulação horizontal |
\n |
Avanço de linha (nova linha) |
\r |
Retorno de carro |
\' |
Aspas simples |
\" |
Aspas duplas |
\u{n} |
Escalar Unicode arbitrário (hexadecimal) |
let quote: String = "\"Hello\", he said."
print(quote) // Prints "Hello", he said.
let unicode: Character = "\u{1F496}"
print(unicode) // Prints 💖
Neste exercício, você vai escrever código para ajudar uma empresa de placas a criar mensagens personalizadas para suas placas.
Defina as seguintes strings constantes que serão usadas para criar placas:
birthday: guarda o valor "Birthday"valentine: guarda o valor "Valentine's Day"anniversary: guarda a string "Anniversary"Defina os seguintes caracteres constantes que serão usados para criar placas:
space: guarda o valor " " (um único espaço)exclamation: guarda o valor "!"Implemente a função buildSign(for:name:), que recebe o argumento for, que guarda uma das três strings definidas na primeira tarefa, e o argumento name, que é uma string que guarda o nome da pessoa para quem a placa é destinada.
Você deve usar concatenação para montar a mensagem da placa e lembre-se de reutilizar as constantes já definidas.
A função deve retornar a mensagem da placa como uma string.
buildSign(for: birthday, name: "Otto")
// returns "Happy Birthday Otto!"
buildSign(for: anniversary, name: "Valentina")
// returns "Happy Anniversary Valentina!"
Implemente a função graduationFor(name:year:), que recebe o argumento name, que é uma string que guarda o nome da pessoa para quem a placa é destinada, e o argumento year, que é um inteiro que guarda o ano em que a pessoa se forma.
Você deve usar template strings para montar a mensagem da placa.
A função deve retornar a mensagem da placa como uma string.
graduationFor(name: "Padma", year: 2023)
// returns "Congratulations Padma!\nClass of 2023"
Implemente a função costOf(sign:), que recebe o argumento sign, que é uma string que guarda a mensagem da placa.
A placa tem um preço base de 20 na moeda em questão. Além disso, cada letra custa 2 (os espaços em branco entram no cálculo).
A função deve retornar o custo da placa como um inteiro.
costOf(sign: "Happy Birthday Grandma!")
// returns 66
Crie sua conta no Exercism para aprender e dominar Swift com 35 conceitos116 exercícios e mentoria humana de verdade, tudo de graça.