Aggiornato per Swift 4
Controllare con cosa inizia e finisce una stringa
È possibile utilizzare i metodi hasPrefix(_:)
e hasSuffix(_:)
per verificare l'uguaglianza con un'altra stringa.
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Recupero delle sottostringhe effettive di prefisso e suffisso
Per ottenere il prefisso effettivo o la sottostringa del suffisso, è possibile utilizzare uno dei seguenti metodi. Consiglio il primo metodo per la sua semplicità. Tutti i metodi usano str
come
let str = "Hello, playground"
Metodo 1: (consigliato) prefix(Int)
esuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
Questo è il metodo migliore secondo me. A differenza dei metodi 2 e 3 di seguito, questo metodo non andrà in crash se gli indici escono dai limiti. Restituirà solo tutti i caratteri nella stringa.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Naturalmente, a volte gli arresti anomali sono buoni perché ti fanno sapere che c'è un problema con il tuo codice. Quindi considera anche il secondo metodo di seguito. Verrà generato un errore se l'indice esce dai limiti.
Metodo 2: prefix(upto:)
esuffix(from:)
Gli indici Swift String sono complicati perché devono tenere conto di caratteri speciali (come le emoji). Tuttavia, una volta ottenuto l'indice, è facile ottenere il prefisso o il suffisso. (Vedi la mia altra risposta su 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 vuoi evitare di uscire dai limiti, puoi creare un indice usando limitedBy
(di nuovo, vedi questa risposta ).
Metodo 3: pedici
Poiché String è una raccolta, puoi utilizzare gli indici per ottenere il prefisso e il suffisso.
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
Ulteriori letture