- Swift Tutorial
- Swift - Home
- Swift - Overview
- Swift - Environment
- Swift - Basic Syntax
- Swift - Variables
- Swift - Constants
- Swift - Literals
- Swift - Comments
- Swift Operators
- Swift - Operators
- Swift - Arithmetic Operators
- Swift - Comparison Operators
- Swift - Logical Operators
- Swift - Assignment Operators
- Swift - Bitwise Operators
- Swift - Misc Operators
- Swift Advanced Operators
- Swift - Operator Overloading
- Swift - Arithmetic Overflow Operators
- Swift - Identity Operators
- Swift - Range Operators
- Swift Data Types
- Swift - Data Types
- Swift - Integers
- Swift - Floating-Point Numbers
- Swift - Double
- Swift - Boolean
- Swift - Strings
- Swift - Characters
- Swift - Type Aliases
- Swift - Optionals
- Swift - Tuples
- Swift - Assertions and Precondition
- Swift Control Flow
- Swift - Decision Making
- Swift - if statement
- Swift - if...else if...else Statement
- Swift - if-else Statement
- Swift - nested if statements
- Swift - switch statement
- Swift - Loops
- Swift - for in loop
- Swift - While loop
- Swift - repeat...while loop
- Swift - continue statement
- Swift - break statement
- Swift - fall through statement
- Swift Collections
- Swift - Arrays
- Swift - Sets
- Swift - Dictionaries
- Swift Functions
- Swift - Functions
- Swift - Nested Functions
- Swift - Function Overloading
- Swift - Recursion
- Swift - Higher-Order Functions
- Swift Closures
- Swift - Closures
- Swift-Escaping and Non-escaping closure
- Swift - Auto Closures
- Swift OOps
- Swift - Enumerations
- Swift - Structures
- Swift - Classes
- Swift - Properties
- Swift - Methods
- Swift - Subscripts
- Swift - Inheritance
- Swift-Overriding
- Swift - Initialization
- Swift - Deinitialization
- Swift Advanced
- Swift - ARC Overview
- Swift - Optional Chaining
- Swift - Error handling
- Swift - Concurrency
- Swift - Type Casting
- Swift - Nested Types
- Swift - Extensions
- Swift - Protocols
- Swift - Generics
- Swift - Access Control
- Swift - Function vs Method
- Swift - SwiftyJSON
- Swift - Singleton class
- Swift Random Numbers
- Swift Opaque and Boxed Type
- Swift Useful Resources
- Swift - Compile Online
- Swift - Quick Guide
- Swift - Useful Resources
- Swift - Discussion
Swift - Strings
Strings in Swift are an ordered collection of characters, such as "Hello, World!" and they are represented by the Swift data type String, which in turn represents a collection of values of characters. Or we can say that Strings are used to represent textual information.
Create a String in Swift
In Swift, we can create a string in two different ways, either by using a string literal or by creating an instance of a String class.
Syntax
Following is the syntax for string −
// Using String literal var str = "Hello" var str : String = "Hello" // Using String class var str = String("Hello")
Example
Swift program to demonstrate how to create a string.
import Foundation // Creating string using String literal var stringA = "Hello, Swift!" print(stringA) // Creating string by specifying String data type var stringB : String = "Hello, Swift!" print(stringB) // Creating string using String instance var stringC = String("Hello, Swift!") print(stringC)
Output
Hello, Swift! Hello, Swift! Hello, Swift!
Empty String in Swift
An empty string is a string that contains nothing. It is represented by double quotes with no characters. It is generally used to initialize string variables before they receive value dynamically. We can create an empty String either by using an empty string literal or creating an instance of a String class.
Syntax
Following is the syntax for empty string −
// Using String literal var str = "" var str : String = "" // Using String class var str = String("")
Example
Swift program to demonstrate how to create an empty string.
import Foundation // Creating empty string using String literal var stringA = "" // Creating empty string by specifying String data type var stringB : String = "" // Creating string using String instance var stringC = String("") // Appending values to the empty strings stringA = "Hello" stringB = "Swift" stringC = "Blue" print(stringA) print(stringB) print(stringC)
Output
Hello Swift Blue
Using the isEmpty property
We can also check whether a string is empty or not using the Boolean property isEmpty. If the specified string is empty, then it will return true. Or if the specified string contains some letters, then it will return false.
Example
Swift program to check whether the given string is an empty string or not.
import Foundation // Creating empty string using String literal var stringA = "" if stringA.isEmpty { print( "stringA is empty" ) } else { print( "stringA is not empty" ) } // Creating string let stringB = "Tutorialspoint" if stringB.isEmpty { print( "stringB is empty" ) } else { print( "stringB is not empty" ) }
Output
stringA is empty stringB is not empty
String Mutability in Swift
We can categorize a string into two types according to its ability to change after deceleration.
Mutable strings: Mutable strings are those strings whose values can change dynamically after creation. Mutable strings are created using the var keyword.
Immutable Strings: Immutable strings are those strings whose values cannot change after creation, if we try to change its value we will get an error. If we want to modify the immutable string, then we have to create a new string with the modified changes. Immutable strings are created using the let keyword.
Example of Mutable Strings
Swift program to create a mutable string.
import Foundation // stringA can be modified var stringA = "Hello, Swift 4!" stringA += "--Readers--" print(stringA)
Output
Hello, Swift 4!--Readers--
Example of immutable Strings
Swift program to create an immutable string.
import Foundation // stringB can not be modified let stringB = String("Hello, Swift 4!") stringB += "--Readers--" print(stringB)
Output
main.swift:5:9: error: left side of mutating operator isn't mutable: 'stringB' is a 'let' constant stringB += "--Readers--" ~~~~~~~ ^ main.swift:4:1: note: change 'let' to 'var' to make it mutable let stringB = String("Hello, Swift 4!") ^~~ var
String Interpolation in Swift
String interpolation is a powerful and convenient technique to create a new string dynamically by including the values of constants, variables, literals, and expressions inside a string literal. Each item (variable or constant or expression) that we want to insert into the string literal must be wrapped in a pair of parentheses, prefixed by a backslash (\).
Syntax
Following is the syntax for string interpolation −
let city = "Delhi" var str = "I love \(city)"
Example
Swift program for string interpolation.
import Foundation var varA = 20 let constA = 100 var varC : Float = 20.0 // String interpolation var stringA = "\(varA) times \(constA) is equal to \(varC * 100)" print(stringA)
Output
20 times 100 is equal to 2000.0
String Concatenation in Swift
String concatenation is a way of combining two or more strings into a single string. We can use the + operator to concatenate two strings or a string and a character, or two characters.
Syntax
Following is the syntax for string concatenation −
var str = str1 + str2
Example
Swift program for string concatenation.
import Foundation let strA = "Hello," let strB = "Learn" let strC = "Swift!" // Concatenating three strings var concatStr = strA + strB + strC print(concatStr)
Output
Hello,LearnSwift!
String Length in Swift
Swift strings do not have a length property, but we can use the count property to count the number of characters in a string.
Example
Swift program to count the length of the string.
import Foundation let myStr = "Welcome to TutorialsPoint" // Count the length of the string let length = myStr.count print("String length: \(length)")
Output
String length: 25
String Comparison in Swift
We can use the "==" operator to compare two strings of variables or constants. This operator returns a boolean value. If the given strings are equal, then it will return true. Otherwise, it will return false.
Example
Swift program to check whether the given strings are equal or not.
import Foundation var varA = "Hello, Swift 4!" var varB = "Hello, World!" // Checking whether the given string is equal or not if varA == varB { print( "\(varA) and \(varB) are equal" ) } else { print( "\(varA) and \(varB) are not equal" ) }
Output
Hello, Swift 4! and Hello, World! are not equal
String Iterating in Swift
String iterations are used to traverse through each character of the specified string and can perform operations on the accessed information. We can iterate through a given string using a for-in loop.
Example
import Foundation var str = "ThisString" for s in str { print(s, terminator: " ") }
Output
T h i s S t r i n g
We can also use the enumerated() function with a for-in loop to get both character and their respective index.
Example
import Foundation var str = "ThisString" for (index, value) in str.enumerated() { print("\(index) = \(value)") }
Output
0 = T 1 = h 2 = i 3 = s 4 = S 5 = t 6 = r 7 = i 8 = n 9 = g
Unicode Strings in Swift
Unicode is a standard way of representing text in different writing systems. Or we can say, that it is used to represent a wide range of characters and symbols. The following are some important points of Unicode −
Character Representation − All the characters present in the string have Unicode scalar values. It is a 21-bit unique number that represents a character. All types of characters and symbols from various languages have Unicode scalar values.
Extended Grapheme Clusters − Extended grapheme clusters are used to represent human-readable characters. It can be a collection of one or more Unicode scalars that represent a single character.
Unicode Scalars − With the help of Unicode Scalars property we can easily access the Unicode scalar value of the given character.
String comparison with Unicode − While comparing two strings, Swift automatically performs a Unicode-complaint comparison. It makes sure that the strings are compared according to their linguistic meaning, not their binary value.
Example
Swift program to access a UTF-8 and UTF-16 representation of a String by iterating over its utf8 and utf16 properties as demonstrated in the following example −
import Foundation var unicodeString = "Dog‼🐶" print("UTF-8 Codes: ") for code in unicodeString.utf8 { print("\(code) ") } print("\n") print("UTF-16 Codes: ") for code in unicodeString.utf16 { print("\(code) ") }
Output
UTF-8 Codes: 68 111 103 226 128 188 240 159 144 182 UTF-16 Codes: 68 111 103 8252 55357 56374
String Functions & Operators in Swift
Swift supports a wide range of methods and operators related to Strings −
S.No | Functions/Operators & Purpose |
---|---|
1 |
isEmpty A Boolean value that determines whether a string is empty or not. |
2 |
hasPrefix(prefix: String) Function to check whether a given parameter string exists as a prefix of the string or not. |
3 |
hasSuffix(suffix: String) Function to check whether a given parameter string exists as a prefix of the string or not. |
4 |
toInt() Function to convert numeric String value into Integer. |
5 |
count() Global function to count the number of Characters in a string. |
6 |
utf8 Property to return a UTF-8 representation of a string. |
7 |
utf16 Property to return a UTF-16 representation of a string. |
8 |
unicodeScalars Property to return a Unicode Scalar representation of a string. |
9 |
+ Operator to concatenate two strings, or a string and a character, or two characters. |
10 |
+= Operator to append a string or character to an existing string. |
11 |
== Operator to determine the equality of two strings. |
12 |
< Operator to perform a lexicographical comparison to determine whether one string evaluates as less than another. |
13 |
== Operator to determine the equality of two strings. |
14 |
startIndex To get the value at starting index of string. |
15 |
endIndex To get the value at ending index of string. |
16 |
Indices To access the indices one by one. i.e. all the characters of string one by one. |
17 |
insert("Value", at: position) To insert a value at a position. |
18 |
remove(at: position) removeSubrange(range) to remove a value at a position, or to remove a range of values from string. |
19 |
reversed() returns the reverse of a string. |