Swift 4.0 (également Swift 5.0)
var str = "Hello, World" // "Hello, World"
str.dropLast() // "Hello, Worl" (non-modifying)
str // "Hello, World"
String(str.dropLast()) // "Hello, Worl"
str.remove(at: str.index(before: str.endIndex)) // "d"
str // "Hello, Worl" (modifying)
Swift 3.0
Les API sont devenues un peu plus rapides et, par conséquent, l'extension Foundation a un peu changé:
var name: String = "Dolphin"
var truncated = name.substring(to: name.index(before: name.endIndex))
print(name) // "Dolphin"
print(truncated) // "Dolphi"
Ou la version sur place:
var name: String = "Dolphin"
name.remove(at: name.index(before: name.endIndex))
print(name) // "Dolphi"
Merci Zmey, Rob Allen!
Swift 2.0+ Way
Il existe plusieurs façons d'y parvenir:
Via l'extension Foundation, bien que ne faisant pas partie de la bibliothèque Swift:
var name: String = "Dolphin"
var truncated = name.substringToIndex(name.endIndex.predecessor())
print(name) // "Dolphin"
print(truncated) // "Dolphi"
En utilisant la removeRange()
méthode (qui modifie laname
):
var name: String = "Dolphin"
name.removeAtIndex(name.endIndex.predecessor())
print(name) // "Dolphi"
En utilisant le dropLast()
fonction:
var name: String = "Dolphin"
var truncated = String(name.characters.dropLast())
print(name) // "Dolphin"
print(truncated) // "Dolphi"
Old String.Index (Xcode 6 Beta 4 +) Way
Étant donné que les String
types dans Swift visent à fournir une excellente prise en charge UTF-8, vous ne pouvez plus accéder aux index / plages / sous-chaînes de caractères à l'aide de Int
types. Au lieu de cela, vous utilisez String.Index
:
let name: String = "Dolphin"
let stringLength = count(name) // Since swift1.2 `countElements` became `count`
let substringIndex = stringLength - 1
name.substringToIndex(advance(name.startIndex, substringIndex)) // "Dolphi"
Alternativement (pour un exemple plus pratique, mais moins pédagogique), vous pouvez utiliser endIndex
:
let name: String = "Dolphin"
name.substringToIndex(name.endIndex.predecessor()) // "Dolphi"
Remarque: j'ai trouvé cela un excellent point de départ pour comprendreString.Index
Ancienne (pré-bêta 4)
Vous pouvez simplement utiliser la substringToIndex()
fonction, en lui fournissant un de moins que la longueur de String
:
let name: String = "Dolphin"
name.substringToIndex(countElements(name) - 1) // "Dolphi"