본문 바로가기

iOS/Swift

Swift 5+) String - Raw String (String 안에서 " \ 사용하기)

 

 

 

안녕하세요 :) 소들입니다!

오늘은 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는 참 편리하닷... 👀

잘못된 개념, 피드백 언제든 환영



Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
최근 댓글
Visits
Today
Yesterday