2014.08.08 18:03

Swift - String

Objective-C NSString과 호환
  • Swift String은 Objective-C NSString과 seamless 하게 동작하도록 연결되어 있음
  • 따라서, NSString에서 제공하던 API가 Swift String에서도 동일하게 제공됨

문자열 초기화
  • literal 로 초기화
    • var emptyString = ""
  • Type initializer로 초기화
    • var emptyString = String()


문자열 편집
  • 변수로 선언된 경우 따옴표로 묶여있는 문자열 또는 다른 문자열 변수/상수를 할당

Value 타입의 문자열
  • 기본적으로 String 타입은 Value 타입으로 함수나 메소드에 전달되나 새로운 변수, 상수에 할당 될 때 그 값이 복사가 된다
  • 실제 Swift 내부적으로는 실행 시 필요한 경우에만 복사를 한다고 한다 (성능 관련)

Character 타입과 관계
  • String은 Character의 조합으로 구성되어 있다
  • String과 Character를 붙일 경우 이를 String에 다시 할당 할 수 있다

let ch:Character = "A"

let str:String = "Hello"

let ch_str = str + ch     // "HelloA"


String Interpolation
  • 문자열 중간에 Escape를 두어 상수나 변수를 문자열과 조합 할 수 있는 기능

let ch:Character = "A"

let str:String = "Hello \(A)" // "Hello A"


Unicode
  • 21 bits Unicode scalar를 사용
  • LATIN SMALL LETTER A는 U+0061 (a)와 같다
  • 특수 문자로 \0 (null) , \\ (backslash) , \t (horizontal tab), \n (line feed), \r (carriage return), \" (double quote), \' (single quote)이 있다
  • 숫자로 표현하는 경우 \u{number} 로 표현하며 1부터 8자리까지의 16진수 값이다

let dollarSign = "\u{24}" 


Extended Grapheme Clusters
  • extended grapheme cluster는 하나 또는 연속되 Unicode Scalar의 묶음으로 조합되었을 때 사람이 읽을 수 있는 문자가 되는 구성을 말한다
  • 예를 들어 "한" 이라는 글자는 U+D55C 이며, 이 글자는 ㅎ(U+1112, 초성), ㅏ(U+1161, 중성), ㄴ(U+11AB, 종성)으로 구성되어 있다
  • Swift String에서 다음과 같이 문자열을 구성하면 "\u{1112}\u{1161}\u{11AB}"가 되며 이 문자열이 화면에 표시되는 경우 "한" 으로 표시된다.
  • 같은 글자로 표시되고 하나의 Charactor 로 생성되며 비교시 동일하게 인식하다고 했지만 실제 실행해 보면 그런것으로 보이지는 않는다. 이부분은 좀 더 확인이 필요할 것 같다

Unicode 표현
  • Swift 문자열는 자기가 가지고 있는 Character를 표현하는 property를 제공한다
  • utf8 : UTF-8 코드
  • utf16 :UTF-16 코드
  • unicodeScalars : 21bit Unicode Scalar로 UTF-32와 동일


'Technical Stubs > Apple Swift' 카테고리의 다른 글

Swift - Control Flow  (0) 2014.08.11
Swift - Data Type #Collections  (0) 2014.08.08
Swift - String  (0) 2014.08.08
Swift - Operators  (0) 2014.08.08
Swift - Data Type #Tuple  (0) 2014.08.08
Swift - Data Type #Optionals  (0) 2014.08.08
Trackback 0 Comment 0