Comment vérifier ce qu'une string commence par (préfixe) ou se termine par (suffixe) dans Swift

J'essaie de tester si une string Swift commence ou se termine avec une certaine valeur. Ces methods n'existent pas:

var str = "Hello, playground" str.startsWith("Hello") // error str.endsWith("ground") // error 

J'aimerais aussi get les strings de préfixe et de suffixe. Je pourrais find une sous-string, comme on le dit ici et ici , mais les plages sont si pénibles dans Swift.

Y a-t-il un moyen plus facile de le faire?

(J'ai trouvé la réponse quand je lisais la documentation , et comme une réponse SO n'a pas été trouvée pour mes termes de search, j'ajoute mon Q & R ici.)

Mise à jour pour Swift 4

Vérification du début et de la fin d'une string

Vous pouvez utiliser les hasPrefix(_:) et hasSuffix(_:) pour tester l'égalité avec une autre string.

 let str = "Hello, playground" if str.hasPrefix("Hello") { // true print("Prefix exists") } if str.hasSuffix("ground") { // true print("Suffix exists") } 

Obtention des sous-strings de préfixe réel et de suffixe

Pour get la sous-string de préfixe ou de suffixe, vous pouvez utiliser l'une des methods suivantes. Je recommand la première méthode pour sa simplicité. Toutes les methods utilisent str comme

 let str = "Hello, playground" 

Méthode 1: prefix(Int) (recommandé) prefix(Int) et suffix(Int)

 let prefix = Ssortingng(str.prefix(5)) // Hello let suffix = Ssortingng(str.suffix(6)) // ground 

C'est la meilleure méthode à mon avis. Contrairement aux methods 2 et 3 ci-dessous, cette méthode ne va pas planter si les index sortent des limites. Cela returnnera simplement tous les caractères de la string.

 let prefix = Ssortingng(str.prefix(225)) // Hello, playground let suffix = Ssortingng(str.suffix(623)) // Hello, playground 

Bien sûr, parfois les plantages sont bons car ils vous permettent de savoir qu'il y a un problème avec votre code. Donc, considérez la deuxième méthode ci-dessous également. Il va lancer une erreur si l'index sort des limites.

Méthode 2: prefix(upto:) et suffix(from:)

Les index Swift Ssortingng sont difficiles car ils doivent prendre en count les caractères spéciaux (comme les emoji). Cependant, une fois que vous obtenez l'index, il est facile d'get le préfixe ou le suffixe. (Voir mon autre réponse sur Ssortingng.Index .)

 let prefixIndex = str.index(str.startIndex, offsetBy: 5) let prefix = Ssortingng(str.prefix(upTo: prefixIndex)) // Hello let suffixIndex = str.index(str.endIndex, offsetBy: -6) let suffix = Ssortingng(str.suffix(from: suffixIndex)) // ground 

Si vous voulez éviter 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 Ssortingng est une collection, vous pouvez utiliser des indices pour get le préfixe et le suffixe.

 let prefixIndex = str.index(str.startIndex, offsetBy: 5) let prefix = Ssortingng(str[..<prefixIndex]) // Hello let suffixIndex = str.index(str.endIndex, offsetBy: -6) let suffix = Ssortingng(str[suffixIndex...]) // ground 

Lecture supplémentaire

  • Documentation sur les strings et les caractères

Préfixe et égalité des suffixes

Pour vérifier si une string a un préfixe ou un suffixe de string particulier, appelez les methods hasPrefix ( 🙂 et hasSuffix ( 🙂 de la string, qui prennent toutes deux un seul argument de type Ssortingng et returnnent une valeur booleanne.

Apple Doc