Types and Strings
String Operations
Strings have useful methods and properties for trimming, changing case, and checking content.
Clean and inspect text
string_operations.swift
Replay: real traced execution (multi-file project)
import Foundation
let rawName = " ada "
let trimmed = rawName.trimmingCharacters(in: CharacterSet.whitespaces)
let display = trimmed.uppercased()
let hasA = display.contains("A")
print("display=\(display)")
print("count=\(display.count)")
print("hasA=\(hasA)")
import Foundation
let rawName = " grace "
let trimmed = rawName.trimmingCharacters(in: CharacterSet.whitespaces)
let display = trimmed.uppercased()
let hasA = display.contains("A")
print("display=\(display)")
print("count=\(display.count)")
print("hasA=\(hasA)")
import Foundation
let rawName = " linus "
let trimmed = rawName.trimmingCharacters(in: CharacterSet.whitespaces)
let display = trimmed.uppercased()
let hasA = display.contains("A")
print("display=\(display)")
print("count=\(display.count)")
print("hasA=\(hasA)")
rawName ← ada , trimmed ← ada, display ← ADA, hasA ← true
3let rawName→ ada = " ada " //@rawName=" grace ", " linus "4let trimmed→ ada = rawName ada .trimmingCharacters(in: CharacterSet.whitespaces)5let display→ ADA = trimmedada.uppercased()6let hasA→ true = displayADA.contains("A")78print("display=\(displayADA)")9print("count=\(display.count3)")10print("hasA=\(hasAtrue)")outputdisplay=ADA count=3 hasA=true
rawName ← grace , trimmed ← grace, display ← GRACE, hasA ← true
3let rawName→ grace = " grace "4let trimmed→ grace = rawName grace .trimmingCharacters(in: CharacterSet.whitespaces)5let display→ GRACE = trimmedgrace.uppercased()6let hasA→ true = displayGRACE.contains("A")78print("display=\(displayGRACE)")9print("count=\(display.count5)")10print("hasA=\(hasAtrue)")outputdisplay=GRACE count=5 hasA=true
rawName ← linus , trimmed ← linus, display ← LINUS, hasA ← false
3let rawName→ linus = " linus "4let trimmed→ linus = rawName linus .trimmingCharacters(in: CharacterSet.whitespaces)5let display→ LINUS = trimmedlinus.uppercased()6let hasA→ false = displayLINUS.contains("A")78print("display=\(displayLINUS)")9print("count=\(display.count5)")10print("hasA=\(hasAfalse)")outputdisplay=LINUS count=5 hasA=false
Follow the Cleanup
rawNamestarts asada.- Trimming spaces makes
trimmedequalada. - Uppercasing makes
displayequalADA. countis3.display.contains("A")is true, so the program printshasA=true. | rawName | display | count | hasA | | --- | --- | --- | --- | |ada| ADA | 3 | true | |grace| GRACE | 5 | true | |linus| LINUS | 5 | false |
string methods
Methods such as `trimmingCharacters(in:)` and `uppercased()` return new string values without changing the original string.
Exercise: string_operations.swift
Reproduce display=ADA, count=3, and hasA=true, then use grace and linus to predict each row.