Is there a quick way to remove the last two characters in a String in Swift? I see there is a simple way to remove the last character as clearly noted here. Do you know how to remove the last two characters? Thanks!
5 Answers
update: Xcode 9 • Swift 4 or later
String now conforms to RangeReplaceableCollection so you can use collection method dropLast straight in the String and therefore an extension it is not necessary anymore. The only difference is that it returns a Substring. If you need a String you need to initialize a new one from it:
let string = "0123456789" let substring1 = string.dropLast(2) // "01234567" let substring2 = substring1.dropLast() // "0123456" let result = String(substring2.dropLast()) // "012345" We can also extend LosslessStringConvertible to add trailing syntax which I think improves readability:
extension LosslessStringConvertible { var string: String { .init(self) } } Usage:
let result = substring.dropLast().string 3 Comments
Malfunction
I just love swift.
Uncommon
Note that
String.dropLast() returns a Substring so you may need to convert it to a String depending on how you're using it.Leo Dabus
@Uncommon if you read the whole answer you would see that it is already stated in the post
var name: String = "Dolphin" let endIndex = name.index(name.endIndex, offsetBy: -2) let truncated = name.substring(to: endIndex) print(name) // "Dolphin" print(truncated) // "Dolph" 4 Comments
Rajan Maheshwari
You just copy pasted from the link given by OP
Naveen Ramanathan
The original link removes the last character, not the last two
dfrib
In contrast to the
dropLast(..) method shown in @LeoDabus answer, the method in this answer will yield a runtime exception for strings that are less than two characters (empty of only one character). Also, whereas the dropLast method is Swift native, .substring is bridged via Foundation from NSString (not entirely Swift native).aremvee
wouldn't better question be, how to select the first N characters, otherwise you need to test you'd have enough to stay non-nil
1 Comment
koen
This will fail if the string is shorter than 2. Per the docs: "Attempting to remove more elements than exist in the collection triggers a runtime error."