131

I need to get the last 4 letters of a string. How can I do that? The length of the string varies.

Example:

var a = "StackOverFlow" var last4 = a.lastFour // That's what I want to do print(last4) // prints Flow 
4
  • substring function.. Commented Sep 29, 2015 at 17:03
  • @EricAya and other closers: This is not a duplicate of the linked question. In method call chains like [1,2,3].map({"Int(\($0))"}).joined(separator: ", ").last(x), substringWithRange and friends are useless. Commented Apr 7, 2017 at 11:49
  • See here for a solution that works in method chains, i.e. without an external reference to the string itself. (Commenting here because this is the top Google result.) Commented Apr 7, 2017 at 13:12
  • these days it's just .suffix(4) Commented Feb 26, 2024 at 14:50

2 Answers 2

334

Swift 2:

A solution is substringFromIndex

let a = "StackOverFlow" let last4 = a.substringFromIndex(a.endIndex.advancedBy(-4)) 

or suffix on characters

let last4 = String(a.characters.suffix(4)) 

Swift 3:

In Swift 3 the syntax for the first solution has been changed to

let last4 = a.substring(from:a.index(a.endIndex, offsetBy: -4)) 

Swift 4+:

In Swift 4 it becomes more convenient:

let last4 = a.suffix(4) 

The type of the result is a new type Substring which behaves as a String in many cases. However if the substring is supposed to leave the scope where it's created in you have to create a new String instance.

let last4 = String(a.suffix(4)) 
Sign up to request clarification or add additional context in comments.

8 Comments

you da ma, all over the Swift strings! Can't find a string question without you on it
be aware that substring will crash if the string is less than 4 characters long
Unfortunately, this is useless in a chain like [1,2,3].map({"Int(\($0))"}).joined(separator: ", ").last(x) -- we don't have a handle on the string in such situations!
@Raphael String([1,2,3].map({"Int(\($0))"}).joined(separator: ", ").characters.suffix(4)) does not work?
@vadian Let's pretend we are in the middle of a chain. ;)
|
18
String substr = a.substring(a.length() - 4) 

syntax is wrong. no type before vars in Swift.

let a = "1234567890" let last4 = String(a.characters.suffix(4)) print(last4) 

works on Swift 3.0

1 Comment

a.substring(a.length() - 4) particular syntax results in build fail. Solution : String(a.characters.suffix(4))

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.