components(separatedBy:)
let str = "apple,orange,banana"
let fruits = str.components(separatedBy: ",")
print(fruits) // ["apple", "orange", "banana"]
문자열을 지정된 구분자로 나누어 배열로 반환
split(separator:)
let str = "apple,orange,banana"
let fruits = str.split(separator: ",")
print(fruits) // ["apple", "orange", "banana"]
구분자가 포함된 문자열의 부분을 반환
컴포넌츠와 스플릿의 비교
// 보통은 빈 문자열의 경우를 많이 가르는데 가독성을 위해 ,로 표기
let str = "apple,orange,banana,,"
let fruitsSplit = str.split(separator: ",")
let fruitsComponents = str.components(separatedBy: ",")
print(fruitsSplit) // ["apple", "orange", "banana", ""]
print(fruitsComponents) // ["apple", "orange", "banana", "", ""]
split(separator:) 함수는 빈 문자열을 구분자로 가진 경우에도 결과 배열에 빈 문자열을 포함시키지 않음.
components(separatedBy:) 함수는 구분자가 연속으로 나타날 때 빈 문자열도 반환.
대부분 같은 용도로 쓰이겠지만 디테일하게 들어가면 이런 차이가 있으니 주의할 것.
split(maxSplits:omittingEmptySubsequences:)
let str = "apple,orange,banana"
let fruits = str.split(maxSplits: 1, omittingEmptySubsequences: false)
print(fruits) // ["apple", "orange,banana"]
최대 1회 분할하고 빈 하위 시퀀스를 포함하지 않음으로 설정.
따라서 첫 번째 쉼표(,)를 기준으로 문자열이 두 부분으로 나뉨.
문자열을 지정된 최대 분할 수에 따라 나누고, 빈 하위 시퀀스를 제외할지 여부를 결정
range(of:)
let str = "Hello, World!"
if let range = str.range(of: "World") {
print("Substring found at index: \(str.distance(from: str.startIndex, to: range.lowerBound))") // 7
} else {
print("Substring not found")
}
문자열 "World"를 찾고 그 위치의 범위를 찾음.
해당 문자열이 존재한다면 그 위치의 범위를 반환하고, 존재하지 않는다면 nil을 반환함.
문자열을 검색하여 일치하는 첫 번째 위치의 범위를 찾아줌.
replacingOccurrences(of:with:)
let str = "apple,orange,banana"
let replacedStr = str.replacingOccurrences(of: ",", with: ";")
print(replacedStr) // "apple;orange;banana"
해당 메서드는 문자열 내의 모든 쉼표(,)를 세미콜론(;)으로 대체.
쉼표가 모두 세미콜론으로 바뀐 새로운 문자열이 반환.
원본 문자열을 변경하지 않고 새로운 문자열을 반환
'iOS > TIL (Today I Learned)' 카테고리의 다른 글
[240325] To-Do List(Remaster) #2 | TIL (0) | 2024.03.25 |
---|---|
[240322] CGV # 1 | TIL (1) | 2024.03.22 |
[230320] To-Do List (Remaster) #1 | TIL (0) | 2024.03.20 |
[240319] To-Do List #2 | TIL (1) | 2024.03.19 |
[240318] Xcode 기초 & LLDB & ToDo List #1 | TIL (2) | 2024.03.18 |