iOS 응용 (swift)
[iOS - swift] # 키워드로 문자열 정규식 처리 방법 (rawString, regular expression, #, #\, escape, hash symbol, hash tag)
jake-kim
2023. 7. 5. 01:35
rawString 개념
- rawString이란 문자열 안에 어떤 문자를 입력하더라도 그 문자 그대로 입력되는 것
rawString 아닌 경우 예시) 문자열 중간에 \r, \n 이와 같은 문자열이 있으면 tab이나 개행문자가 입력
print("value1 \n value2")
/*
value1
value2
*/
- Swift5 전에는 "value1 \n value2" 이 문자 그대로 rawString의 값이 들어가기 위해서는 \n 왼쪽에 escape를 넣어주어야 가능
print("value1 \\n value2")
// value1 \n value2
# 키워드로 rawString 만들기
- Swift5부터 #키워드를 사용하면 쉽게 rawString 생성이 가능
- #키워드 등장 이유) rawString으로 만들기 위해 문자 중간에 esacpe를 붙이면 가독성이 많이 떨어지는 문제가 발생
- #키워드를 rawString 만들 문자열 시작과 끝에 붙이기만 하면 적용 완료
print(#"value1 \n value2"#)
// value1 \n value2
escape와 #비교)
- #을 붙인 경우가, 코드를 읽는 입장에서 "이건 rawString"이다 라는것을 알기가 쉽고 중간에 escape문자도 들어가지 않게되어 가독성이 높아지는 효과
| escape로 rawString 만든 경우 | #으로 rawString 만든 경우 |
| "value1 \\n value2" | #"value1 \n value2"# |
- \가 들어가는 rawString 정규식을 만들때도 #을 사용하면 더욱 가독성이 증가
print("\\\\\\([^)]+\\)")
print(#"\\\([^)]+\)"#)
/*
\\\([^)]+\)
\\\([^)]+\)
*/
#을 사용할때 문자열 안에서 \n (개행)을 입력하고 싶은 경우
- #을 사용하고 escape를 사용하면 escape 기능 동작 x
print(#"abc\#ndef"#)
/*
abc\ndef
*/
- 이럴땐 \#을 사용하면 기존 escape 기능과 동일하게 사용이 가능
print(#"abc\#ndef"#)
/*
abc
def
*/
ex) #을 사용했을때 문자열 중간에 프로퍼티 값을 넣고 싶을때 역시도 #\ 키워드로 사용
let myName = "iOS 앱 개발 알아가기 jake"
let message = #"""
a: \(myName).
b: \#(myName).
"""#
print(message)
/*
a: \(myName).
b: iOS 앱 개발 알아가기 jake.
*/
* 전체 코드: https://github.com/JK0369/ExRegularExpressionStringWithHashTag
* 참고
https://www.hackingwithswift.com/articles/162/how-to-use-raw-strings-in-swift