You are currently viewing [Swift] 문자열 심화: 타입 변환과 특수 문자
swift

[Swift] 문자열 심화: 타입 변환과 특수 문자

문자열을 숫자로 변환하기 (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\ 입니다."