[Swift] 문자열(String) 관련 주요 함수 정리

Swiftios
avatar
2025.02.27
·
8 min read

문자열 길이 및 확인 관련 함수

문자열 길이 확인 (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"]

여러 개의 구분자로 나누려면 replacingOccurrencessplit() 사용

배열을 문자열로 결합 (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" (국가별 포맷 적용)






- 컬렉션 아티클