Skip to main content

Swift String Methods

Strings are one of the most commonly used data types in programming. In Swift, strings are incredibly powerful, with numerous built-in methods that help you manipulate and work with text efficiently. This guide will introduce you to the most useful string methods in Swift that will make your text handling tasks much easier.

Introduction to String Methods

String methods are built-in functions that perform operations on strings. Whether you need to search for substrings, extract parts of a string, convert case, or transform text in various ways, Swift's string methods provide elegant solutions.

Basic String Properties

Before diving into methods, let's look at some basic properties of strings:

String Length

To find the length of a string, use the count property:

swift
let greeting = "Hello, Swift!"
let length = greeting.count
print("The string contains \(length) characters")
// Output: The string contains 13 characters

Checking if a String is Empty

Use the isEmpty property to check if a string contains no characters:

swift
let emptyString = ""
let nonEmptyString = "Not empty"

print(emptyString.isEmpty) // Output: true
print(nonEmptyString.isEmpty) // Output: false

String Manipulation Methods

Changing Case

Swift makes it easy to convert strings to uppercase or lowercase:

swift
let mixedCase = "Hello Swift Programmers"

// Converting to uppercase
let upperCase = mixedCase.uppercased()
print(upperCase) // Output: HELLO SWIFT PROGRAMMERS

// Converting to lowercase
let lowerCase = mixedCase.lowercased()
print(lowerCase) // Output: hello swift programmers

// Capitalizing the first letter
let capitalized = mixedCase.capitalized
print(capitalized) // Output: Hello Swift Programmers

Trimming Whitespace

Remove whitespace from the beginning and end of a string:

swift
let textWithWhitespace = "   Too much space   "
let trimmed = textWithWhitespace.trimmingCharacters(in: .whitespacesAndNewlines)
print("'\(trimmed)'") // Output: 'Too much space'

Searching and Substring Methods

Checking if a String Contains a Substring

You can check if a string contains a specific substring using the contains(_:) method:

swift
let sentence = "Swift programming is fun and powerful"

if sentence.contains("fun") {
print("The string contains the word 'fun'")
} else {
print("The word 'fun' was not found")
}
// Output: The string contains the word 'fun'

Checking Prefix and Suffix

Check if a string starts or ends with specific text:

swift
let fileName = "document.pdf"

// Check if it starts with a specific string
print(fileName.hasPrefix("doc")) // Output: true

// Check if it ends with a specific string
print(fileName.hasSuffix(".pdf")) // Output: true

Finding a Substring's Position

Swift uses Range and Index to locate positions within strings:

swift
let welcome = "Welcome to Swift programming"

if let range = welcome.range(of: "Swift") {
let position = welcome.distance(from: welcome.startIndex, to: range.lowerBound)
print("'Swift' starts at position \(position)")
} else {
print("Substring not found")
}
// Output: 'Swift' starts at position 11

String Modification Methods

Replacing Substrings

Replace occurrences of a substring with another string:

swift
var statement = "Swift is difficult to learn"

// Replace a single occurrence
if let range = statement.range(of: "difficult") {
statement.replaceSubrange(range, with: "easy")
}
print(statement) // Output: Swift is easy to learn

// Replace all occurrences
let newStatement = statement.replacingOccurrences(of: "learn", with: "master")
print(newStatement) // Output: Swift is easy to master

Inserting and Removing

Insert or remove characters at specific positions:

swift
var message = "Hello World"

// Insert a string at a specific position
let insertIndex = message.index(message.startIndex, offsetBy: 5)
message.insert(contentsOf: ", amazing", at: insertIndex)
print(message) // Output: Hello, amazing World

// Remove a substring
if let range = message.range(of: ", amazing") {
message.removeSubrange(range)
}
print(message) // Output: Hello World

Splitting and Joining Strings

Splitting a String

Split a string into an array of substrings based on a delimiter:

swift
let commaSeparatedValues = "apple,banana,grape,orange"
let fruits = commaSeparatedValues.split(separator: ",")

print(fruits)
// Output: ["apple", "banana", "grape", "orange"]

// You can also limit the number of splits
let limitedFruits = commaSeparatedValues.split(separator: ",", maxSplits: 2)
print(limitedFruits)
// Output: ["apple", "banana", "grape,orange"]

Joining Strings

Join an array of strings into a single string with a separator:

swift
let words = ["Swift", "is", "awesome"]
let sentence = words.joined(separator: " ")
print(sentence) // Output: Swift is awesome

// Join with a different separator
let hyphenated = words.joined(separator: "-")
print(hyphenated) // Output: Swift-is-awesome

Practical Examples

Let's apply these string methods in some real-world scenarios:

Example 1: Validating Email Format

swift
func isValidEmail(_ email: String) -> Bool {
// Very basic validation - check for @ symbol and domain with at least one dot
return email.contains("@") &&
email.split(separator: "@").count == 2 &&
email.split(separator: "@")[1].contains(".")
}

// Test the function
let email1 = "[email protected]"
let email2 = "invalid-email"

print("\(email1) is valid: \(isValidEmail(email1))")
// Output: [email protected] is valid: true
print("\(email2) is valid: \(isValidEmail(email2))")
// Output: invalid-email is valid: false

Example 2: Creating a URL Slug

swift
func createSlug(from title: String) -> String {
// Convert to lowercase
let lowercased = title.lowercased()

// Replace spaces with hyphens
let withHyphens = lowercased.replacingOccurrences(of: " ", with: "-")

// Remove any non-alphanumeric characters (simplified)
let validChars = "abcdefghijklmnopqrstuvwxyz0123456789-"
let slug = withHyphens.filter { validChars.contains($0) }

return slug
}

let articleTitle = "How to Use Swift String Methods!"
let slug = createSlug(from: articleTitle)
print(slug) // Output: how-to-use-swift-string-methods

Example 3: Formatting a Phone Number

swift
func formatPhoneNumber(_ rawNumber: String) -> String {
// Remove any non-digit characters
let digitsOnly = rawNumber.filter { $0.isNumber }

// Check if we have enough digits for a US phone number
guard digitsOnly.count == 10 else {
return "Invalid number"
}

// Get different parts of the phone number
let index3 = digitsOnly.index(digitsOnly.startIndex, offsetBy: 3)
let index6 = digitsOnly.index(digitsOnly.startIndex, offsetBy: 6)

let areaCode = digitsOnly[..<index3]
let firstPart = digitsOnly[index3..<index6]
let secondPart = digitsOnly[index6...]

// Format as (XXX) XXX-XXXX
return "(\(areaCode)) \(firstPart)-\(secondPart)"
}

let rawPhoneNumber = "1234567890"
let formatted = formatPhoneNumber(rawPhoneNumber)
print(formatted) // Output: (123) 456-7890

Summary

Swift provides a rich set of string manipulation methods that allow you to perform various operations on text data. In this guide, we've covered:

  • Basic properties like count and isEmpty
  • Changing case with uppercased(), lowercased(), and capitalized
  • Trimming whitespace
  • Searching for substrings, prefixes, and suffixes
  • Locating and replacing text within strings
  • Inserting and removing content
  • Splitting strings into arrays and joining them back together
  • Practical examples showing real-world applications

By mastering these string methods, you'll be well-equipped to handle text processing tasks in your Swift applications.

Additional Resources and Exercises

Exercises

  1. Create a function that counts how many times a specific character appears in a string
  2. Write a function that reverses a string without using the built-in reversed() method
  3. Create a "title case" function that capitalizes the first letter of each word in a sentence
  4. Write a function that checks if a string is a palindrome (reads the same backward as forward)
  5. Create a function that censors specified words in a text by replacing them with asterisks

Further Reading

Keep practicing these string methods to become proficient in text manipulation with Swift!



If you spot any mistakes on this website, please let me know at [email protected]. I’d greatly appreciate your feedback! :)