문자열을 숫자로 변환하기 (Type Casting)
앞서 배운 것처럼, +
연산자는 같은 타입끼리만 작동합니다. 따라서 문자열과 숫자를 직접 더하려고 하면 타입 오류가 발생합니다.
Swift
// let result = "Hello" + 2 // 🚨 오류 발생! String과 Int는 직접 더할 수 없습니다.
만약 "2"
처럼 숫자 형태를 띤 문자열을 실제 숫자처럼 연산하고 싶다면, **타입 캐스팅(Type Casting)**을 통해 문자열을 숫자 타입(Int
, Double
등)으로 변환해야 합니다.
왜 결과가 옵셔널(Optional)일까요? 🤔
문자열을 숫자로 변환하는 작업은 항상 성공한다는 보장이 없습니다.
Int("2")
: 성공적으로 숫자2
로 변환됩니다.Int("고양이")
: “고양이”는 숫자로 표현할 수 없으므로 변환에 실패합니다.
이러한 실패 가능성 때문에, Swift는 변환 결과를 옵셔널(Optional) 타입으로 반환합니다. 성공하면 값이 담긴 옵셔널(Int?
타입의 2
)을, 실패하면 nil
을 반환합니다.
따라서 if let
을 사용한 옵셔널 바인딩으로 안전하게 값을 추출하여 사용해야 합니다.
Swift
let numberString = "2"
// let numberString = "고양이" // 이 코드로 바꾸면 else 블록이 실행됩니다.
if let convertedNumber = Int(numberString) {
// 변환이 성공하면, convertedNumber는 Int 타입의 2가 됩니다.
let sum = 5 + convertedNumber
print("합계: \(sum)") // "합계: 7" 출력
} else {
// 변환이 실패하면 이 블록이 실행됩니다.
print("숫자로 변환할 수 없습니다.")
}
특수 문자 (Special Characters / Escape Sequences)
문자열 안에 줄바꿈이나 따옴표 같은 특수 문자를 직접 포함시키려면 **이스케이프 시퀀스(Escape Sequence)**를 사용해야 합니다. 이스케이프 시퀀스는 **역슬래시(\
)**로 시작합니다.
시퀀스 | 의미 | 예시 |
\n | 줄바꿈 (New Line) | "첫 번째 줄\n두 번째 줄" |
\" | 큰따옴표 (Double Quote) | "그가 말했다. \"안녕하세요\"" |
\\ | 역슬래시 (Backslash) | "파일 경로는 C:\\Users 입니다." |
\t | 탭 (Tab) | "이름:\tJohn" |
Swift
// 줄바꿈 예제 (콘솔에서 두 줄로 출력됩니다)
let multiLineString = "첫 번째 줄입니다.\n두 번째 줄입니다."
print(multiLineString)
// 따옴표 예제
let quoteString = "그가 말했다. \"공을 잡을 수 있니?\""
print(quoteString)
Raw String: 모든 것을 있는 그대로
Raw String은 문자열 보간법(\()
)이나 이스케이프 시퀀스(\n
등)를 처리하지 않고, 보이는 그대로 문자열을 만듭니다. 문자열 앞뒤를 **해시 기호(#
)**로 감싸서 만듭니다.
코드 예제나 파일 경로처럼 \
나 \()
가 많이 포함된 텍스트를 그대로 표현하고 싶을 때 유용합니다.
Swift
let age = 30
// Raw String에서는 \(age)가 보간되지 않고 그대로 출력됩니다.
let rawSentence = #"그의 나이는 \(age)살이고, 경로는 C:\Users\ 입니다."#
print(rawSentence)
// 출력: "그의 나이는 \(age)살이고, 경로는 C:\Users\ 입니다."