Swift - Swift의 특수한 문자열 처리

 

다중행 문자열과 확장된 문자열 구분자 등을 중심으로

Swift의 특수한 문자열 처리


  • Swift에서 String의 불변성 여부는 상수인지(let), 변수인지(var)에 따라 결정된다.
  • 다중행 문자열을 표현할 때는 3겹의 겹따옴표(“””…”””)를 이용하여 표현할 수 있다.
let quotation = """
The White Rabbit put on his spectacles.  "Where shall I begin,
please your Majesty?" he asked.

"Begin at the beginning," the King said gravely, "and go on
till you come to the end; then stop."
"""
  • 모든 문자열은 여는 따옴표 바로 뒤에서 시작하고 닫는 따옴표 바로 뒤에서 끝난다. 따라서 아래의 두 코드는 동일한 문자열 값을 갖는다(두 번째 코드에도 줄바꿈 문자는 포함되지 않는다).
let singleLineString = "These are the same."
let multilineString = """
These are the same.
"""
  • 줄바꿈 문자가 시각적으로는 보여지지만 문자열 값에는 포함되지 않도록 하고 싶다면 줄이 바뀌는 위치에 ‘\’를 사용한다.
let softWrappedQuotation = """
The White Rabbit put on his spectacles.  "Where shall I begin, \
please your Majesty?" he asked.

"Begin at the beginning," the King said gravely, "and go on \
till you come to the end; then stop."
"""
  • 줄바꿈으로 시작하거나 끝나는 문자열을 만들고 싶으면 시작하는 따옴표 뒤나 끝나는 따옴표 앞에 빈 라인 하나를 넣어주면 된다.
let lineBreaks = """

This string starts with a line break.
It also ends with a line break.

"""
  • 다중라인 문자열에서 시작하는 따옴표 바로 뒤의 공백들과 끝나는 따옴표 바로 앞의 공백들은 무시된다.
  • 다중행 문자열 내에서는 일반 따옴표는 제약 없이(이스케이프 문자 없이) 사용 가능하나 다중라인 표현을 위한 3중 따옴표는 세 따옴표 중에 적어도 하나는 이스케이프 문자를 사용해야 한다.
  • 문자열 내의 특수한 문자들을 기능하지 않고 그대로 출력 시키기 위해 # 구분자를 사용한다.
let str2 = "Line 1\nLine 2"
print("str2 = \(str2)")

/* 출력
str2 = Line 1
Line 2
*/

let str3 = #"Line 1\nLine 2"#
print("str3 = \(str3)")

/* 출력
str3 = Line 1\nLine 2
*/
  • #으로 둘러싸인 문자열 내의 이스케이프 문자와 특수 문자 사이에 다시 #을 집어넣으면 특수문자는 원래대로 기능한다.
  • #은 여러겹으로 사용 가능하다.
let str4 = #"Line 1\#nLine 2"#
print("str4 = \(str4)")

/* 출력
str4 = Line 1
Line 2
*/

let str4 = #####"Line 1\###nLine 2"#####
print("str4 = \(str4)")

/* 출력
str4 = Line 1\###nLine 2
*/

let str4 = #####"Line 1\#####nLine 2"#####
print("str4 = \(str4)")

/* 출력
str4 = Line 1
Line 2
*/