import Foundation
let name = "+/..hyejeong../+"
let trimmingName = name.trimmingCharacters(in: CharacterSet(charactersIn: "./+"))
print(trimmingName)
// 출력: hyejeong
string타입에 사용할 수 있다. 잘라내져야 할 부분이있거나 공백을 없애줘야한다거나 기타 등등 in: 매개변수를 받아서 사용가능하다.
⭐️특징은 문자열의 시작과 끝에서만 적용된다는 것이다.
import Foundation
let name = "+/..hye..jeong../+"
let trimmingName = name.trimmingCharacters(in: CharacterSet(charactersIn: "./+"))
print(trimmingName)
// 출력: hye..jeong
트리밍은 표준 라이브러리에서 제공되는 문자열 타입 메서드이다. (foundation 프레임워크).
모든 10진수를 포함
let 앞뒤숫자를제거해야할문자 = "123hello123"
let 제거 = 앞뒤숫자를제거해야할문자.trimmingCharacters(in: .decimalDigits)
print(제거)
// 출력: hello
URL host를 구성할 수 있는 문자
import Foundation
let urlString = "#@!example.com#@!"
// 앞뒤의 URL 호스트에 허용되지 않는 문자 제거
let 트리밍URL = urlString.trimmingCharacters(in: CharacterSet.urlHostAllowed.inverted)
print(트리밍URL) // "example.com"
이 외에 공백, 대문자, 소문자 등 굉장히 많은 문자셋이 정해져있다.
내 마음대로 앞뒤로 잘라내야할 조건을 정할 수도 있다.
extension CharacterSet {
static let star : CharacterSet = {
return CharacterSet(charactersIn: "⭐️")
}()
}
let string = "⭐️별 이모지 좀 없애줘⭐️"
let 없애드리겠습니다 = string.trimmingCharacters(in: .star)
print(없애드리겠습니다)
//출력 : 별 이모지 좀 없애줘
문자열의 양쪽 끝에서 특정 문자 집합에 포함된 문자를 제거하는 데 사용된다고 했다.
trimmingCharacters(in:)
가 removeAll
, removeFirst
, removeLast
보다 더 효율적인 가상상황을 만들어본다.
상황: 문자열의 양쪽 끝에서 공백 및 특정 기호,문자를 제거해야하는 경우
trimmingCharacters(in:)
사용할 경우import Foundation
let input = "!! Hello, World !! "
let trimmed = input.trimmingCharacters(in: CharacterSet(charactersIn: "! ").union(.whitespaces))
print(trimmed) // "Hello, World"
removeAll
및 removeFirst
+ removeLast
사용할 경우removeAll
은 문자열의 특정 문자 전체를 제거하는 데 사용되기 때문에 이 상황에 적합하지 않고 문자열의 중간에 있는 문자도 제거해버린다
removeFirst
+ removeLast
를 사용하는 예제:
import Foundation
var input = "!! Hello, World !! "
// 앞쪽 공백 및 특정 기호 제거
while input.first == "!" || input.first == " " {
input.removeFirst()
}
// 뒤쪽 공백 및 특정 기호 제거
while input.last == "!" || input.last == " " {
input.removeLast()
}
print(input) // "Hello, World"
trimmingCharacters(in:)
는 한 줄의 코드로 특정 문자 집합을 제거할 수 있어, 더 간결하고 가독성이 좋은 반면
removeFirst
+ removeLast
는 반복문을 사용하여 일일이 문자를 제거해야해서 코드가 복잡해진다
trimmingCharacters(in:)
는 내부적으로 최적화되어 있기 때문에 문자열의 양쪽 끝에서 문자를 한 번에 제거할 수 있는 반면에
removeFirst
+ removeLast
는 반복문을 통해 문자를 하나씩 제거해야 하므로 상대적으로 비효율적이다
trimmingCharacters(in:)는
CharacterSet을 사용하여 다양한 문자 집합을 쉽게 처리할 수 있지만
removeFirst+
removeLast`는 특정 문자에 대해서만 반복문을 작성해야 한다.
문자열의 양쪽 끝에서 특정 문자 집합을 제거하는 작업은 trimmingCharacters(in:)
를 사용하는 것이 훨씬 효율적이고 적합하다