66 votes

Supprimer les deux derniers caractères dans une chaîne

Y a-t-il un moyen rapide de supprimer les deux derniers caractères d'une chaîne de caractères en Swift? Je vois qu'il y a une manière simple de supprimer le dernier caractère comme clairement indiqué ici. Savez-vous comment supprimer les deux derniers caractères? Merci!

0 votes

150voto

Leo Dabus Points 122890

Mise à jour : Xcode 9 • Swift 4 ou ultérieur

String se conforme maintenant à RangeReplaceableCollection afin que vous puissiez utiliser la méthode de collection dropLast directement dans la String et par conséquent une extension n'est plus nécessaire. La seule différence est qu'elle renvoie un Substring. Si vous avez besoin d'une String, vous devez en initialiser une nouvelle à partir de celle-ci :

let string = "0123456789"
let substring1 = string.dropLast(2)         // "01234567"
let substring2 = substring1.dropLast()      // "0123456"
let result = String(substring2.dropLast())  // "012345"

Nous pouvons également étendre LosslessStringConvertible pour ajouter une syntaxe de fin qui, je pense, améliore la lisibilité :

extension LosslessStringConvertible {
    var string: String { .init(self) }
}

Utilisation :

let result = substring.dropLast().string

7 votes

Je suis simplement amoureux de swift.

1 votes

Merci. C'est magnifique.

0 votes

Notez que String.dropLast() renvoie un Substring donc vous devrez peut-être le convertir en une chaîne de caractères en fonction de la manière dont vous l'utilisez.

60voto

Naveen Ramanathan Points 1258
var nom: String = "Dauphin"
let endIndex = nom.index(nom.endIndex, offsetBy: -2)
let tronque = nom.substring(to: endIndex)
print(nom)      // "Dauphin"
print(tronque) // "Dauph"

4 votes

Vous venez de copier-coller à partir du lien donné par l'utilisateur original

3 votes

Le lien d'origine supprime le dernier caractère, pas les deux derniers

5 votes

Contrairement à la méthode dropLast(..) montrée dans la réponse de @LeoDabus, la méthode dans cette réponse produira une exception d'exécution pour les chaînes de caractères qui ont moins de deux caractères (vides ou ne contenant qu'un seul caractère). De plus, tandis que la méthode dropLast est propre à Swift, .substring est en pont avec Foundation depuis NSString (pas entièrement propre à Swift).

25voto

Deepak Tagadiya Points 805

Swift 4:

laissé str = "Bonjour, aire de jeu"
laissé newSTR1 = str.dropLast(3)
imprimer(newSTR1) 

sortie: "Bonjour, joue"

//---------------//

laissé str = "Bonjour, aire de jeu"
laissé newSTR2 = str.dropFirst(2)
imprimer(newSTR2)

sortie: "llo, aire de jeu"

1voto

Andy Obusek Points 4242

Utilisez removeSubrange(Range) comme suit :

var str = "Bonjour, terrain de jeu"
str.removeSubrange(Range(uncheckedBounds: (lower: str.index(str.endIndex, offsetBy: -2), upper: str.endIndex)))

Cela provoquera un plantage si la chaîne de caractères est inférieure à 2 caractères de long. Est-ce une exigence pour vous ?

1voto

Mieux vaut utiliser removeLast()

var myString = "Bonjour le monde"
myString.removeLast(2)

résultat : "Bonjour le mon"

1 votes

Cela échouera si la chaîne est plus courte que 2. Selon la documentation : "Essayer de supprimer plus d'éléments qu'il n'y en a dans la collection déclenche une erreur d'exécution."

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X