String Literal 정복 (feat. 백준 10172 개)

Lily·2023년 2월 2일
0
post-thumbnail

안녕하세요!
오늘은 백준의 10172번 개, 10171 고양이, 25083 새싹을 풀다가 알게된 String Literal의 다양한 기능들에 대해 알아보겠습니다!🐶🐈🌱


String Literals


Multiline String Literals

  • 줄바꿈이 있는 여러 줄의 문장을 \n 사용하지 않고 그대로 쓰고 싶을 때
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."
"""

  • \n 을 사용하면 줄 바꿈이 반영되어 출력됨
let softWrappedQuotation = """
The White Rabbit put on his spectacles.  "Where shall I begin, \n
please your Majesty?" he asked.

"Begin at the beginning," the King said gravely, "and go on \n
till you come to the end; then stop."
"""


  • 소스코드의 가독성을 위해서 줄을 구분하고 싶으면 \ 로 구분하기! (출력값에는 줄바꿈이 반영되지 않음!)
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."
"""

출력을 보면 \ 는 무시되는 것을 확인할 수 있음


  • closing quatation marks(”””)의 시작 지점이 문장 시작의 기준이됨

let lineWithIndentation = """
    closing quotation marks에 맞춰서 시작하니까 공백 없음
        이건 공백 있음
    여기부터 시작이니까 이건 공백 없음
    """


Special Characters in String Literals

  • 아래와 같은 특수 문자는 특수 문자 앞에 \를 붙여서 사용

(아래와 같은 형태를 escaped speical character라고 부름)

  • \0(null character),
  • \\(backslash)
  • \t (horizontal tab)
  • \n(line feed)
  • \r(carriage return)
  • \"(double quotation mark)
  • \'(single quotation mark)
let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"


  • \u{유니코드 스칼라 값} 으로 문자를 표현할 수도 있음 (유니코드 스칼라 값은 1-8 digit hexadecimal number)
let dollarSign = "\u{24}"        // $,  Unicode scalar U+0024
let blackHeart = "\u{2665}"      // ♥,  Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" // 💖, Unicode scalar U+1F496

  • multiline string literal은 3개의 쌍따옴표(“””)를 쓰므로 쌍따옴표 2개(””)까지는 \ 없이 그냥 사용 할 수 있음
  • 따라서 쌍따옴표 3개 사용하려면 아래 처럼 표시 (또는 아래의 Extended String Delimiters사용 )
let threeDoubleQuotationMarks = """
Escaping the first quotation mark \"""
Escaping all three quotation marks \"\"\"
"""


Extended String Delimiters

  • extended delimiters를 사용하면, escaped special character(\특수문자)를 string literal로 쓸 수 있음
  • 즉, 백 슬래시를 무력화 가능
  • extended delimiter는 "# 을 붙이면 됨
let extendedStringDelimiter = #"Line 1\nLine 2"#


  • mulitline string literal도 동일하게 """#을 붙이면 됨
let extenedStringDelimiter = #"""
extenedStringDelimiter에서는 \는 의미 없다, \n \t \\
"""#


  • 뿐만 아니라 쌍따옴표 3개(“””)도 리터럴도 쓸 수 있음
let threeMoreDoubleQuotationMarks = #"""
    Here are three more double quotes: """
"""#


  • 아래와 같이 특수문자로 그려진 귀여운 강아지도 그대로 출력 가능
let extenedStringDelimiter = #"""
    |\_/|
    |q p|   /}
    ( 0 )"""\
    |"^"`    |
    ||_/=\\__|
"""#
출처: 백준 [https://www.acmicpc.net/problem/10172](https://www.acmicpc.net/problem/10172) (String Literal 공부의 시발 지점)


  • 만약, 특수 문자의 기능을 사용하고 싶다면 \뒤에 #을 붙여주면 됨
  • # 개수는 통일해야함
let extendedStringDelimiter = #"Line 1\#nLine 2"#
let extendedStringDelimiter = ###"Line1\###nLine2"###

동일한 결과 출력됨


Reference

https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html

profile
i🍎S 개발을 합니다

0개의 댓글