검색결과 리스트
2015/08/01에 해당되는 글 1건
- 2015.08.01 [swift] 문자열과 문자 -1 (Strings and Characters)
글
[swift] 문자열과 문자 -1 (Strings and Characters)
프래그램밍에서 기본은 문자열 다루기! Swift에서는 문자열과 문자를 어떻게 다룰까요?
문자열은 "hello" 같은 문자들의 순서집합
Swift 문자열은 String 타입으로 표현되며, String 타입은 Character타입 값들의 집합으로 표현됨.
String과 Character 타입은 코드에서 텍스트를 다룰 때 빠르고 유니코드 호환되는 방식을 제공.
문자열 생성과 조작 문법은 간단하고 가독성이 좋으며, C와 유사한 문자열 리터럴 문법을 가짐.
+ 연산자를 사용하여 두 문자열을 쉽게 연결가능.
문자열의 변경가능 유무는 Swift의 다른 값들처럼 var,let 에 따라 관리.
문법이 단순함에 더해 Swift의 문자열 타입은 빠르고 현대적은 구현을 갖음.
모든 문자열은 인코딩에 독립적인 유니코드 문자로 구성.
다양한 유니코드 표현방식으로 문자들 접근을 지원.
문자열 보간을 사용하여 문자열에 상수, 변수, 리터럴, 표현식 삽입가능.
1. 문자열 리터럴
문자열 리터럴은 쌍따옴표 쌍으로 감싸진 고정된 순서의 문자들입니다. 상수나 변수에 초기값으로 문자열 리터럴을 사용할수 있습니다.
let someString = "Some string literal value"
Swift는 someString 상수가 문자열 리터럴로 초기화 되었기 때문에 String 타입임을 추론합니다.
2. 빈 문자열 생성
var emptyString = "" // 문자열 리터럴 사용
var anotherEmptyString = String() // 문자열 생성자 사용
// 두 문자열은 비어있으면 두 표현은 동일함
isEmpty 속성을 사용해서 String 값이 비어있는지 검사할 수 있습니다.
if emptyString.isEmpty {
print("Nothing to see here")
}
3. 문자열의 수정가능 유무(Mutability)
문자열을 변수(var) 또는 상수(let)에 할당하느냐에 따라 String의 수정가능 유무를 가리킬수 있습니다.
var variableString = "Horse"
variableString += " and carriage"
// variableString은 "Horse and carriage"
let constantString = "Highlander"
costantString += " and another Highlander"
// 문자열 상수는 변경할수 없다는 컴파일 에러가 발생
문자열의 수정가능 유무를 NSString 클래스와 NSMutableString 클래스로 결정하는 Objective-C 와는 접근방식이 다릅니다.
4. 문자열은 Value타입!
Swift의 String타입은 value타입입니다. 새 문자열을 생성하면 문자열은 함수나 메소드에 전달되거나, 변수 또는 상수에 할당될 때마다 복사됩니다. 각 경우에 기존 문자열의 복사본이 생성되고 이 복사본이 전달되거나 할당됩니다.
Swift의 이런 특성(copy-by-default)은 함수나 메소드가 문자열을 전달받으면 어디에서 왔는지에 상관없이 완전히 문자열을 소유한다는 것을 보장해줍니다. 즉 스스로 문자열을 변경하지 않으면 전달받은 문자열은 결코 수정되지 않을 것이라 확실할 수 있습니다.
사실 Swift 컴파일러가 반드시 필요한 경우에만 복사가 일어나도록 문자열 사용을 최적화합니다. value 타입으로 문자열을 사용하면 항상 좋은 성능을 얻을 수 있습니다.
5. 문자 다루기
for-in 루프에서 character 속성을 사용해서 문자열의 개별 문자들에 접근할 수 있습니다.
for character in "Dog!".character {
print(character)
}
// D
// o
// g
// !
한문자만을 갖는 문자열 리터럴을 사용해서 Character 상수를 생성할수 있습니다.
let exclamationMar:Character = "!"
문자열은 Character의 배열을 생성자의 인자로 전달하여 생성할 수도 있습니다.
let catCharacters:[Character] = ["C", "a", "t", "!"]
let catString = String(catCharacters)
print(catString)
// Cat!
6. 문자열과 문자 접합
- 연산자를 사용하여 두 문자열을 접합한 새로운 문자열을 생성할 수 있습니다.
let string1 = "hello"
let string2 = " there"
var welcome = string1 + string2
// welcome은 "hello there"
문자열 변수에 += 연산자를 사용하여 문자열을 추가할 수도 있습니다.
var instruction = "look over"
instruction += string2
// instruction은 "look over there"
문자열 변수에 append() 메소드를 사용하여 문자를 추가할 수 있습니다.
let exclamationMark:Character = "!"
welcome.append(exclamationMark)
// welcome은 "hello there!"
Character 변수는 하나의 문자만 포함하기 때문에 다른 문자열이나 문자를 추가할 수 없습니다.
7. 문자열 보간(Interpolation)
문자열 보간은 문자열 리터럴 안에 상수, 변수, 리터럴, 표현식을 혼합하여 새로운 문자열을 생성하는 방식입니다. 각 항목은 백슬러시와 소괄호 안에 감싸여진 문자열 리터럴에 삽입됩니다.
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
위 예에서 multipiler값은 문자열 리터럴 (multiplier)에 삽입됩니다. 새 문자열을 생성하기 위해 문자열 보간이 평가될때 placeholder는 multiplier의 실제값으로 대치됩니다.
표현식 Double(multiplier) * 2.5는 계산된 결과 7.5가 문자열에 삽입됩니다.
'Swift' 카테고리의 다른 글
| [swift2] Xcode7 beta5 Swift 언어 변경사항 (0) | 2015.08.14 |
|---|---|
| [swift1.2] Swift 프로토콜 지향 프로그래밍 (0) | 2015.08.06 |
| [swift] 문자열과 문자 -1 (Strings and Characters) (0) | 2015.08.01 |
| [swift2] Xcode7 beta4 Swift 언어 변경사항 (0) | 2015.07.30 |
| [swift] 성능향상 시키기 - 다이나믹 디스패치를 최소화 (0) | 2015.07.16 |
| [swift2] Xcode7 beta3 Swift 언어 변경사항 (0) | 2015.07.11 |