Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] # 키워드로 문자열 정규식 처리 방법 (rawString, regular expression, #, #\, escape, hash symbol, hash tag) 본문

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

Comments