문자열 길이 및 확인 관련 함수
문자열 길이 확인 (count
)
문자열의 글자 수 반환
let text = "Swift"
print(text.count) // 5
배열처럼 isEmpty
도 가능
let text = "Swift"
print(text.isEmpty) // false
배열의 요소 개수 확인과 동일한 방식
let array = ["A", "B", "C"]
print(array.count) // 3
문자열 검색 관련 함수
특정 문자 포함 여부 (contains
)
문자열 내 특정 문자가 포함되어 있는지 확인
let text = "Swift is awesome"
print(text.contains("Swift")) // true
print(text.contains("Java")) // false
대소문자 구분 주의 (caseInsensitiveCompare 사용 가능)
let text = "Swift is awesome"
print(text.lowercased().contains("swift")) // true
접두사/접미사 확인 (hasPrefix()
, hasSuffix()
)
문자열이 특정 문자열로 시작하는지 확인
let filename = "image.png"
print(filename.hasPrefix("image")) // true
문자열이 특정 문자열로 끝나는지 확인
let filename = "image.png"
print(filename.hasSuffix(".png")) // true
문자열 찾기 (firstIndex(of:)
, range(of:)
)
문자열에서 특정 문자의 첫 번째 위치 찾기
let text = "Swift is awesome"
if let index = text.firstIndex(of: "i") {
print("i 위치: \(text.distance(from: text.startIndex, to: index))") // i 위치: 2
}
문자열에서 특정 문자열의 범위 찾기
let text = "Swift is awesome"
if let range = text.range(of: "awesome") {
print("awesome 위치: \(text.distance(from: text.startIndex, to: range.lowerBound))")
}
문자열 변환 관련 함수
대소문자 변환 (uppercased()
, lowercased()
)
문자열을 대문자로 변환
let upper = "swift".uppercased()
print(upper) // "SWIFT"
문자열을 소문자로 변환
let lower = "SWIFT".lowercased()
print(lower) // "swift"
앞뒤 공백 제거 (trimmingCharacters(in:)
)
앞뒤 공백 제거 (중간 공백은 유지됨)
let textWithSpaces = " Hello, Swift! "
print(textWithSpaces.trimmingCharacters(in: .whitespaces)) // "Hello, Swift!"
모든 공백 제거 (replacingOccurrences(of:)
활용)
print(textWithSpaces.replacingOccurrences(of: " ", with: "")) // "Hello,Swift!"
문자열 치환 (replacingOccurrences(of: with:)
)
문자열 내 특정 문자열을 다른 문자열로 치환
let sentence = "I love Python!"
let newSentence = sentence.replacingOccurrences(of: "Python", with: "Swift")
print(newSentence) // "I love Swift!"
여러 개의 문자를 치환하려면 반복 사용 또는 reduce
활용
let text = "apple,banana;cherry"
let cleaned = text.replacingOccurrences(of: ",", with: " ")
.replacingOccurrences(of: ";", with: " ")
print(cleaned) // "apple banana cherry"
문자열 분할 & 결합 관련 함수
문자열 분할 (split(separator:)
)
문자열을 특정 문자 기준으로 나누기
let words = "Swift is awesome".split(separator: " ")
print(words) // ["Swift", "is", "awesome"]
연속된 구분자를 무시 (빈 문자열 없음)
let text = "Swift,,is,,awesome"
print(text.split(separator: ",")) // ✅ ["Swift", "is", "awesome"]
빈 문자열도 포함하려면 omittingEmptySubsequences: false
옵션 사용
let text = "Swift,,is,,awesome"
print(text.split(separator: ",", omittingEmptySubsequences: false))
// ["Swift", "", "is", "", "awesome"]
문자열을 여러 구분자로 분할 (components(separatedBy:)
)
구분자로 문자열을 분할 (빈 문자열 포함됨)
let words2 = "Swift,,is,,awesome".components(separatedBy: ",")
print(words2) // ["Swift", "", "is", "", "awesome"]
여러 개의 구분자로 나누려면 replacingOccurrences
후 split()
사용
배열을 문자열로 결합 (joined(separator:)
)
문자열 배열을 하나의 문자열로 변환
let wordsArray = ["Swift", "is", "awesome"]
let sentence = wordsArray.joined(separator: " ")
print(sentence) // "Swift is awesome"
문자열 포맷 관련 함수
문자열 삽입 (appending()
)
문자열을 추가하여 새로운 문자열 반환
let base = "Hello"
let newString = base.appending(", Swift!")
print(newString) // "Hello, Swift!"
+=
연산자로도 가능
var base2 = "Hello"
base2 += ", Swift!"
print(base2) // "Hello, Swift!"
숫자를 문자열로 변환 (String(describing:)
)
정수 & 실수 → 문자열 변환
let num = 42
let strNum = String(num)
print(strNum) // "42"
소수점 자릿수 지정 (String(format:)
)
let pi = 3.141592
print(String(format: "%.2f", pi)) // "3.14"
문자열 비교 관련 함수
문자열 동등 비교 (==
, !=
)
let str1 = "Swift"
let str2 = "swift"
print(str1 == str2) // false (대소문자 구분)
print(str1.lowercased() == str2.lowercased()) // true (소문자로 변환 후 비교)
대소문자 무시하고 비교 (caseInsensitiveCompare
)
let str1 = "Swift"
let str2 = "swift"
let result = str1.caseInsensitiveCompare(str2)
print(result == .orderedSame) // true
로컬라이징 기반 정렬 (localizedStandardCompare()
)
let words = ["apple", "Banana", "cherry"]
let sortedWords = words.sorted { $0.localizedStandardCompare($1) == .orderedAscending }
print(sortedWords) // ["apple", "Banana", "cherry"] (대소문자 구분 없이 정렬)
문자열 인덱스 및 부분 문자열 관련 함수
문자열의 첫 번째 & 마지막 문자 가져오기 (startIndex
, endIndex
)
문자열 범위를 지정하여 부분 문자열 추출 가능
text[text.count - 1]
처럼(배열처럼) 접근하면 오류 발생
let text = "Swift"
print(text[text.startIndex]) // "S"
print(text[text.index(before: text.endIndex)]) // "t"
범위 연산자를 이용하여 부분 문자열 가져오기
let start = text2.startIndex
let end = text2.index(start, offsetBy: 4)
print(text2[start...end]) // "Hello"
문자열 앞뒤 일부 가져오기 (prefix()
, suffix()
)
문자열 범위를 지정하여 부분 문자열 추출 가능
let text2 = "Hello, Swift!"
print(text2.prefix(5)) // "Hello"
print(text2.suffix(6)) // "Swift!"
범위 연산자를 이용하여 부분 문자열 가져오기
let text2 = "Hello, Swift!"
let start = text2.startIndex
let end = text2.index(start, offsetBy: 4)
print(text2[start...end]) // "Hello"
Substring을 String으로 변환하려면 String()
사용
let text2 = "Hello, Swift!"
let subString = text2.prefix(5)
let newString = String(subString)
다국어 지원(Localization) 관련 함수
번역된 문자열 가져오기 (localized()
)
앱에서 다국어 지원이 필요할 때 유용한 함수
let greeting = NSLocalizedString("hello", comment: "인사말")
print(greeting) // "Hello" (영어) or "안녕하세요" (한국어)
숫자, 날짜 포맷 자동 변환 (formatted()
)
지역별 숫자, 날짜, 통화 포맷 적용 가능
let number = 1234567.89
print(number.formatted()) // "1,234,567.89" (국가별 포맷 적용)