안녕하세요 :) 소들입니다!
오늘은 Swift 5.0에서 나온 Raw String에 대해 다뤄볼 거예요!
바로 본론으로 갈게용 🎃
모든 포스팅은 편의 말투로 합니다~!!
1. String을 사용하며 불편한 점
String을 사용할 때 누구나 겪어봤을 불편한 점이 뭔줄 아셈??
바로바로
일반적인 선언으로는
위 두 가지 문자를 String에 포함시킬 수 없다는 점임
예로 보자면
이런 식으로 String을 나타내는 경계 문자(" ") 사이에는
" \
이 두가지를 문자를 사용할 수 없음
왜냐면 이 두 문자는 String에서 이미 예약어처럼 사용되고 있거든!!
" 는 문자열의 시작과 끝을 알리는 경계 문자(String delimiter)로 사용되고 있고,
\ 는 이스케이프((Escape delimiter)문자로 사용되고 있기 때문임 (개행, 값 포함 등)
따라서 사용하고 싶다면
이런 식으로
문자 앞에 \를 하나 더 붙여서 사용해야 했음
그러면 원하는 대로 출력이
나왔음!!
근데 지저분행... 가독성도 떨어지고.. ㅜㅜ
심지어 정규식 표현 같은 경우엔 Swift만 모양이 달라지는 불상사가 발생함 =_=
//일반 정규식 표현
var zipCodeRefex = "^\d{d}-?\d{3}$"
|
//Swift 정규식 표현
var zipCodeRefex = "^\\d{d}-?\\d{3}$"
|
이런 식으로 정규식에서 \를 사용하려면 두개씩 써야해서 모양이 변형됨
따라서 이를 해결해주는 것이
바로 오늘 배울
Raw String
이라는 것임 :)
2. Raw String 사용법
먼저, Raw string의 사용법은 다음과 같음
문자열 경계문자(" ") 앞, 뒤에 #을 붙여준다
문자열 경계문자 앞 뒤에 #을 붙인 Raw String은
#이 붙어 있는 경계 문자(" ") 안에
" \ 가 포함되어 있으면 문자 그대로 인식함
따라서
다음과 같이 \를 한번 더 쓰지 않고도 원하는 대로 표현할 수 있음
이런 식으루 !!!!
위 문자열을 출력하면
쨔쟌~
\를 하나 더 쓰지 않아도 원하는 모양으로 출력 됨!!!
따라서 정규식 문자열도 Raw String을 사용하면
다음과 같이 모양이 변하지 않고 사용할 수 있음:)
//Raw String을 이용한 Swift 정규식 표현
var zipCodeRefex = #"^\d{d}-?\d{3}$"#
|
오호 편하군?
근데 문제점 발생
어..? 나는 개행이 하고 싶은데 출력해보면
어..?
Raw String의 특징에 대해 알아보자 :)
3. Raw String 특징
몇 가지 특징에 대해 알고 가겠움 :)
3-1. \ (Escape Delimiter)를 사용하고 싶을 경우 \ 뒤에 #을 붙인다
이렇게 \(Escape Delimiter) 다음에 #을 붙여주면 됨
그럼 정상적으로 개행이
된닷!!!
개행 외에 값을 포함하고 싶을 때도
이런 식으루 사용하면 됨! :)
3-2. #의 갯수는 개발자 마음, 근데 통일은 시켜주자
무스 말이냐 #을 하나 붙이건 ## 두개 붙이건 ### 세개 붙이건 상관 없음
근데 Raw String으로 사용되는 #의 갯수는 위처럼 꼭꼭!!! 통일시켜 줘야 함!!!!
만약 #의 갯수를 통일시켜주지 않으면 😱
에러가 나거나
\ (Escape Delimiter)이
문자열로 인식되니
조심하셈 :)
자 그럼 Raw String 포스팅 끝 :)
저같은 경우엔 Code Block을 제가 직접 Swift 하이라이트를 주도록 만들어서 쓰는데
그때 코드를 문자열 그대로 인식해야할 때 쓰니까 참 편하더라구요 ㅎㅎㅎ
Swift는 참 편리하닷... 👀
잘못된 개념, 피드백 언제든 환영
'iOS > Swift' 카테고리의 다른 글
Swift) Codable - JSON을 쉽게 Encoding / Decoding 하자 (9) | 2020.11.30 |
---|---|
Swift) Localizing - 다국어 처리하기 (16) | 2020.11.28 |
Swift & Objective-C) Closure와 Block의 차이점 (9) | 2020.11.06 |
Swift) String에 대한 고찰 (1) - Struct인데 Heap에 저장 된다고? (8) | 2020.10.07 |
Swift) Optional 부수기 (6) - Optional Chaining (옵셔널 체이닝) (9) | 2020.09.24 |