철이의 컴노리
  • 안녕하세요!
  • KOTLIN
  • ANDROID
    • Architecture Components
      • 프로젝트에 추가하기
      • 데이터 바인딩 라이브러리
        • 시작하기
        • 레이아웃 및 바인딩 표현식
      • 라이프 사이클 처리
      • ViewModel
    • CameraX
      • CameraX 아키텍처
      • 구성
      • 미리보기
      • 이미지 분석
      • 이미지 캡처
      • 제조 업체 확장 기능
    • View
      • 커스텀뷰의 크기 정하기
    • JNI 튜토리얼
      • 1장. 저자 소개
      • 2장. Hello JNI
      • 3장. 메서드 등록
      • 4장. int 데이터형 값 주고 받기
      • 5장. boolean 데이터형 값 주고 받기
      • 6장. double 데이터형 값 주고 받기
      • 7장. float 데이터형 값 주고 받기
      • 8장. long 데이터형 값 주고 받기
      • 9장. short 데이터형 값 주고 받기
      • 10장. char 데이터형 값 주고 받기
      • 11장. byte 데이터형 값 주고 받기
      • 12장. JNI에서 문자열 다루기 1/3
      • 13장. JNI에서 문자열 다루기 2/3
      • 14장. JNI에서 문자열 다루기 3/3
      • 15장. 레퍼런스 이해하기
      • 16장. 배열 다루기 1/4
      • 17장. 배열 다루기 2/4
      • 18장. 배열 다루기 3/4
      • 19장. 배열 다루기 4/4
      • 20장. 중간 요약
      • 21장. 자바 클래스 찾기 1/2
      • 22장. 자바 클래스 찾기 2/2
      • 23장. 정적 메서드 찾기
      • 24장. 정적필드 찾기
      • 25장. 자바 클래스 인스턴스 생성하기
      • 26장. 자바 클래스 인스턴스 메서드 찾기
      • 27장. 자바 클래스의 인스턴스 필드 찾기
      • 28장. 네이티브 쓰레드 실행하기
  • Swift
    • What' New
      • Swift 5.0
        • Result 타입
        • Raw 문자열
        • 커스텀 문자열 보간
    • Codable
      • 커스텀 타입 인코딩 및 디코딩
  • iOS
  • OpenGL
    • OpenGL Tutorial
      • 1장. 저자 소개
      • 2장. OpenGL 윈도우 프레임웍 만들기 1편
      • 3장. OpenGL 윈도우 프레임웍 만들기 2편
      • 4장. 점그리기
      • 5장. 선 그리기
      • 6장. 다각형 그리기
      • 7장. 색 표현하기
      • 8장. 3차원 폴리곤 그리기
      • 9장. 투영변환
      • 10장. 이동, 회전, 크기 변환
      • 11장. 빛, 재질 표현하기
      • 12장. 텍스춰매핑
    • OpenGL ES Tutorial for iOS
      • 1장. 저자 소개
      • 2장. 튜토리얼 소개
      • 3장. OpenGL|ES 개발 환경 만들기
      • 4장. 뷰 배경색상 변경하기
      • 5장. 투영에 대해서 1/2
      • 6장. 투영에 대해서 2/2
      • 7장. 선분 및 삼각형 그리기
      • 8장. 색상칠하기
      • 9장. 텍스춰맵핑
      • 10장. 종횡비
      • 11장. 텍스춰 UV좌표
      • 12장. 텍스춰매핑 파라미터
      • 13장. 깊이버퍼
      • 14장. 원근투영
  • ENV
    • oh-my-zsh
      • 특정 git 폴더에서 zsh 이 느려질 때
  • Ubuntu
    • UEFI USB
    • nvidia driver
    • /dev/kvm on Android Studio
    • install oracle-jdk8
  • chromium
    • javap
Powered by GitBook
On this page

Was this helpful?

  1. Swift
  2. What' New
  3. Swift 5.0

Raw 문자열

Swift 5.0에서 더욱 강력해진 Raw 문자열을 소개합니다.

PreviousResult 타입Next커스텀 문자열 보간

Last updated 6 years ago

Was this helpful?

은 백슬래시와 따옴표(“)가 이스케이프 문자나 문자열 종결자로 해석하지 않고 순수 문자 리터럴로 해석하게끔 Raw 문자열을 만드는 기능을 추가했습니다. 이렇게 하면 많은 경우에 도움이 되지만 특히 정규표현식을 사용할 때 도움이 됩니다.

Raw 문자열을 사용하려면 다음과 같이 문자열 앞에 # 기호를 한 개 이상 배치합니다.

let rain = #"The "rain" in "Spain" falls mainly on the Spaniards."#

문자열의 시작과 끝 부분에 있는 # 기호는 문자열의 시작과 끝을 구분하는 기호가 되므로 Swift는 "rain"및 "Spain"을 둘러싼 따옴표를 문자열 종결자로 해석하지 않고 문자 따옴표로 이해합니다. Raw 문자열을 사용하면 백슬래시도 사용할 수 있습니다.

let keypaths = #"Swift keypaths such as \Person.name hold uninvoked references to properties."#

백슬래시는 문자열에서 이스케이프 문자가 아닌 문자로 취급됩니다. 이 경우 문자열 보간이 다르게 작동합니다.

let answer = 42
let dontpanic = #"The answer to life, the universe, and everything is #(answer)."#

문자열 (answer)는 문자 그대로 해석되기 때문에, Raw 문자열에서 문자열 보간을 사용하기 위해서는 여분의 #을추가해야 합니다. 즉, 문자열 보간을 사용하기 위해 #(answer)을 사용합니다.

Swift 5.0의 Raw 문자열은 해시 기호를 처음과 끝에 사용합니다. 필요한 경우 해시 기호를 두 개 이상 사용할 수 있습니다. 당장 좋은 예를 들기는 어렵습니다. 해시 기호를 두 개 이상 사용하는 경우가 정말 드물기 때문입니다. 그러나 다음 문자열을 생각해 봅시다. My dog sail "woof"#gooddog.

해시 기호 앞에 공백이 없으므로 Swift는 #을 문자열 종결자로 해석합니다. 이 경우에는 구분 기호를 # 에서 ## 으로 변경해야 합니다.

let str = ##"My dog said "woof"#gooddog"##

시작과 끝에 있는 해시 기호는 서로 개수가 같아야 합니다. Raw 문자열은 Swift의 멀티 라인 문자열 시스템과 완벽하게 호환됩니다. #""" 로 시작하고 """# 끝내면 됩니다.

let multiline = #"""
The answer to life,
the universe,
and everything is #(answer).
"""#

Raw 문자열은 백슬래시를 많이 사용하는 정규 표현식에서 특히 유용합니다. 예를 들어, \Person.name 같은 keypath를 찾는 간단한 정규식을 작성해 봅시다.

let regex1 = "\\\\[A-Z]+[A-Za-z]+\\.[a-z]+"

Raw 문자열을 사용하면 백슬래시를 절반으로 줄일 수 있습니다.

let regex2 = #"\\[A-Z]+[A-Za-z]+\.[a-z]+"#

백슬래시를 완전히 제거할 수는 없습니다. 정규 표현식이 백슬래시를 정규 표현식의 일부로 사용하기 때문입니다.

이 글은 을 편역한 것입니다.

https://www.hackingwithswift.com/articles/126/whats-new-in-swift-5-0
SE-0200