🔥 문자열 리터럴

719자
8분

문자열 리터럴은 Swift에서 미리 정의된 String 값을 코드에 포함하는 방법이에요. 문자열 리터럴은 큰따옴표(")로 둘러싸인 문자열의 시퀀스랍니다. 다음 예제처럼 상수나 변수를 초기화할 때 문자열 리터럴을 사용할 수 있어요.

let someString = "Some string literal value"
// someString 상수는 문자열 리터럴로 초기화되었기 때문에 Swift는 String 타입으로 추론해요.
swift

여러 줄 문자열 리터럴

여러 줄에 걸쳐 있는 문자열이 필요하다면 여러 줄 문자열 리터럴을 사용하세요. 여러 줄 문자열 리터럴은 세 개의 큰따옴표로 둘러싸인 문자열의 시퀀스예요. 아래 예제를 보면 이해가 될 거예요.

let quotation = """
The White Rabbit put on his spectacles.  "Where shall I begin,
please your Majesty?" he asked.
 
"Begin at the beginning," the King said gravely, "and go on
till you come to the end; then stop."
"""
swift

여러 줄 문자열 리터럴은 여는 따옴표와 닫는 따옴표 사이의 모든 줄을 포함해요. 문자열은 여는 따옴표(""") 다음 줄부터 시작되고 닫는 따옴표 앞 줄에서 끝나요. 이는 아래 두 문자열이 줄 바꿈으로 시작하거나 끝나지 않는다는 것을 의미해요.

let singleLineString = "These are the same."
let multilineString = """
These are the same.
"""
swift

여러 줄 문자열 리터럴 안에서 줄 바꿈이 있으면 그 줄 바꿈은 문자열의 값에도 나타나요. 소스 코드를 읽기 쉽게 하기 위해 줄 바꿈을 사용하고 싶지만 줄 바꿈이 문자열의 값에 포함되길 원하지 않는다면, 그 줄의 끝에 백슬래시(\\)를 작성하세요.

let softWrappedQuotation = """
The White Rabbit put on his spectacles.  "Where shall I begin, \\
please your Majesty?" he asked.
 
"Begin at the beginning," the King said gravely, "and go on \\
till you come to the end; then stop."
"""
swift

줄 바꿈으로 시작하거나 끝나는 여러 줄 문자열 리터럴을 만들려면 첫 줄이나 마지막 줄에 빈 줄을 작성하세요. 예를 들면 이렇게요.

let lineBreaks = """
 
This string starts with a line break.
It also ends with a line break.
 
"""
swift

여러 줄 문자열은 주변 코드와 맞춰서 들여쓰기 할 수 있어요. 닫는 따옴표(""") 앞의 공백은 Swift에게 다른 모든 줄 앞에서 무시할 공백이 무엇인지 알려줘요. 하지만 닫는 따옴표 앞의 공백 외에 줄의 시작 부분에 공백을 작성하면 그 공백은 포함돼요.

lecture image

위 예제에서 전체 여러 줄 문자열 리터럴이 들여쓰기 되어 있음에도 불구하고 문자열의 첫 줄과 마지막 줄은 공백으로 시작하지 않아요. 가운데 줄은 닫는 따옴표보다 더 많이 들여쓰기 되어 있어서 4칸의 추가 들여쓰기로 시작하고 있죠.

문자열 리터럴의 특수 문자

문자열 리터럴에는 다음과 같은 특수 문자가 포함될 수 있어요.

  • 이스케이프된 특수 문자: \\0 (널 문자), \\\\ (백슬래시), \\t (가로 탭), \n (줄 바꿈), \\r (캐리지 리턴), \\" (큰따옴표), \\' (작은따옴표)
  • 임의의 유니코드 스칼라 값: \\u{n} 형식으로 작성하며, 여기서 n은 1-8자리 16진수예요. (유니코드는 아래에서 다룰 거예요.)

아래 코드는 이러한 특수 문자의 네 가지 예제를 보여줘요. wiseWords 상수는 두 개의 이스케이프된 큰따옴표를 포함하고 있어요. dollarSign, blackHeart, sparklingHeart 상수는 유니코드 스칼라 형식을 보여주고 있죠.

let wiseWords = "\\"Imagination is more important than knowledge\\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
let dollarSign = "\\u{24}"        // $,  Unicode scalar U+0024
let blackHeart = "\\u{2665}"      // ♥,  Unicode scalar U+2665
let sparklingHeart = "\\u{1F496}" // 💖, Unicode scalar U+1F496
 
swift

여러 줄 문자열 리터럴은 하나 대신 세 개의 큰따옴표를 사용하기 때문에 이스케이프 하지 않고도 여러 줄 문자열 리터럴 안에 큰따옴표(")를 포함할 수 있어요. 여러 줄 문자열에 """을 포함하려면 따옴표 중 하나 이상을 이스케이프 하세요. 예를 들면 이렇게요.

let threeDoubleQuotationMarks = """
Escaping the first quotation mark \\"""
Escaping all three quotation marks \\"\\"\\"
"""
swift

확장된 문자열 구분자

확장된 구분자 안에 문자열 리터럴을 넣으면 특수 문자의 효과를 발동시키지 않고도 문자열에 특수 문자를 포함할 수 있어요. 문자열을 따옴표(")로 둘러싸고 그 주위를 숫자 기호(#)로 둘러싸면 돼요. 예를 들어 #"Line 1\nLine 2"#을 출력하면 문자열을 두 줄에 걸쳐 출력하는 대신 줄 바꿈 이스케이프 시퀀스(\n)를 그대로 출력해요.

문자열 리터럴에서 문자의 특수 효과가 필요하다면 이스케이프 문자(\\) 다음에 문자열 내의 숫자 기호 수를 맞추세요. 예를 들어 문자열이 #"Line 1\nLine 2"#이고 줄을 바꾸고 싶다면 대신 #"Line 1\\#nLine 2"#을 사용할 수 있어요. 마찬가지로 ###"Line1\\###nLine2"###도 줄을 바꿔요.

확장된 구분자를 사용하여 생성된 문자열 리터럴은 여러 줄 문자열 리터럴이 될 수도 있어요. 확장된 구분자를 사용하여 여러 줄 문자열에 """을 포함할 수 있고, 이는 리터럴을 종료하는 기본 동작을 오버라이드하죠. 예를 들면 이렇게요.

let threeMoreDoubleQuotationMarks = #"""
Here are three more double quotes: """
"""#
swift

이렇게 문자열 리터럴에 대해 알아보았어요. 문자열 리터럴을 사용하면 코드에 미리 정의된 문자열 값을 쉽게 포함할 수 있답니다. 여러 줄 문자열 리터럴과 확장된 구분자를 활용하면 더 다양한 형태의 문자열을 표현할 수 있겠죠? 이제 여러분도 Swift에서 문자열을 자유자재로 다룰 수 있게 되었길 바랍니다.