Atualizado para Swift 4
Verificar com o que uma String começa e termina com
Você pode usar os métodos hasPrefix(_:)
e hasSuffix(_:)
para testar a igualdade com outra String.
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Obtendo o prefixo real e substrings de sufixo
Para obter o prefixo real ou substring de sufixo, você pode usar um dos seguintes métodos. Eu recomendo o primeiro método por sua simplicidade. Todos os métodos usam str
como
let str = "Hello, playground"
Método 1: (recomendado) prefix(Int)
esuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
Este é o melhor método na minha opinião. Ao contrário dos métodos 2 e 3 abaixo, este método não irá falhar se os índices saírem dos limites. Ele apenas retornará todos os caracteres da string.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Claro, às vezes as falhas são boas porque permitem que você saiba que há um problema com o seu código. Portanto, considere o segundo método abaixo também. Ele gerará um erro se o índice sair dos limites.
Método 2: prefix(upto:)
esuffix(from:)
Os índices Swift String são complicados porque devem levar em consideração caracteres especiais (como emoji). No entanto, depois de obter o índice, é fácil obter o prefixo ou sufixo. (Veja minha outra resposta em String.Index
.)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
Se você quiser se proteger contra sair dos limites, pode fazer um índice usando limitedBy
(novamente, veja esta resposta ).
Método 3: subscritos
Como String é uma coleção, você pode usar subscritos para obter o prefixo e o sufixo.
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
Leitura Adicional