Mis à jour pour Swift 4
Vérifier par quoi une chaîne commence et se termine par
Vous pouvez utiliser les méthodes hasPrefix(_:)
et hasSuffix(_:)
pour tester l'égalité avec une autre chaîne.
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Obtention des sous-chaînes de préfixe et de suffixe réels
Afin d'obtenir le préfixe réel ou la sous-chaîne de suffixe, vous pouvez utiliser l'une des méthodes suivantes. Je recommande la première méthode pour sa simplicité. Toutes les méthodes utilisent str
comme
let str = "Hello, playground"
Méthode 1: (recommandée) prefix(Int)
etsuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
C'est la meilleure méthode à mon avis. Contrairement aux méthodes 2 et 3 ci-dessous, cette méthode ne plantera pas si les index sortent des limites. Il renverra simplement tous les caractères de la chaîne.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Bien sûr, les plantages sont parfois bons car ils vous indiquent qu'il y a un problème avec votre code. Considérez donc également la deuxième méthode ci-dessous. Cela lancera une erreur si l'index sort des limites.
Méthode 2: prefix(upto:)
etsuffix(from:)
Les index Swift String sont délicats car ils doivent prendre en compte des caractères spéciaux (comme les emoji). Cependant, une fois que vous obtenez l'index, il est facile d'obtenir le préfixe ou le suffixe. (Voir mon autre réponse sur 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
Si vous voulez vous garder de sortir des limites, vous pouvez créer un index en utilisant limitedBy
(encore une fois, voir cette réponse ).
Méthode 3: indices
Puisque String est une collection, vous pouvez utiliser des indices pour obtenir le préfixe et le suffixe.
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
Lectures complémentaires