티스토리 뷰
출처
문자열
선언
let someString = "Some string literal value"
빈 문자열 초기화
var emptyString = String()
var anotherEmptyString = ""
if emptyString.isEmpty {
print("empty string")
}
문자열은 값 타입이다.
Swift 의 String 타입은 값 타입니다.
새로운 String 값을 만들면 String 값을 함수나 메소드에 전달될 때
또는 상수나 변수에 할당할 때 복사된다. (copied)
각각의 경우 기존 String 의 새로 복사된 값은 생성되고
새로 복사된 값은 원래 버전이 아니며 전달되거나 할당된다.
컴파일러는 필요한 경우에만 실제 복사가 일어나도록
문자열 사용을 최적화해준다.
값 타입처럼 문자열을 작업할 때 항상 좋은 성능을 가지는 것을 의미한다.
문자로 작업하기 (Working with Characters)
Characters 선언은 String 과 같다.
let character : Character = "!"
for character in "Dog!🐶".characters {
print(character)
}
String 값은 초기화 인자 값처럼
Character 의 배열 값을 전달하여 구성될 수 있다.
let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
let catString = String(catCharacters)
print(catString)
문자열과 문자 연결하기 (Concatenating Strings and Characters)
let string1 = "hello"
let string2 = " there"
var welcome = string1 + string2
welcome += "!"
print(welcome)
character 와의 연결은 append() 로 가능하다.
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
문자열 삽입 (String Interpolation)
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
유니코드
유니코드 스칼라 (Unicode Scalars)
특수문자 ( \\, \n, \r, \t, \", \', 0)
let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
let dollarSign = "\u{24}" // $, Unicode scalar U+0024
let blackHeart = "\u{2665}" // ♥, Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" // 💖, Unicode scalar U+1F496
문자열 관련 Method
count
let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
print("\(unusualMenagerie.characters.count) characters") // 40 characters"
let koala = "🐨"
print ("\(koala.characters.count) characters") // 1 characters
var word = "cafe"
print("the number of characters in \(word) is \(word.characters.count)")
// Prints "the number of characters in cafe is 4"
word += "\u{301}" // COMBINING ACUTE ACCENT, U+0301
print("the number of characters in \(word) is \(word.characters.count)")
// Prints "the number of characters in café is 4"
접근과 수정, indices
let greeting = "Guten Tag!"
greeting[greeting.startIndex] // G
greeting[greeting.index(before: greeting.endIndex)] // !
greeting[greeting.index(after: greeting.startIndex)] // u
let index = greeting.index(greeting.startIndex, offsetBy: 7)
greeting[index] // a
greeting[greeting.endIndex] // error
greeting.index(after: endIndex) // error
for index in greeting.characters.indices {
print("\(greeting[index]) ")
}
삽입과 제거
var welcome = "hello"
welcome.insert("!", at: welcome.endIndex)
// "hello!"
welcome.insert(contentsOf:" there".characters,
at: welcome.index(before: welcome.endIndex))
// "hello there!"
var welcome = "hello there!"
welcome.remove(at: welcome.index(before: welcome.endIndex)) //"hello there"
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range) //"hello"
문자열 비교
let quotation = "We're a lot alike, you and I."
let sameQuotation = "We're a lot alike, you and I."
if quotation == sameQuotation {
print("These two strings are considered equal")
}
접두사, 접미사 동등 비교
let romeoAndJuliet = [ "Act 1 Scene 1: Verona, A public place",
"Act 1 Scene 2: Capulet's mansion",
"Act 1 Scene 3: A room in Capulet's mansion",
"Act 1 Scene 4: A street outside Capulet's mansion",
"Act 1 Scene 5: The Great Hall in Capulet's mansion",
"Act 2 Scene 1: Outside Capulet's mansion",
"Act 2 Scene 2: Capulet's orchard",
"Act 2 Scene 3: Outside Friar Lawrence's cell",
"Act 2 Scene 4: A street in Verona",
"Act 2 Scene 5: Capulet's mansion",
"Act 2 Scene 6: Friar Lawrence's cell" ]
var act1SceneCount = 0
for scene in romeoAndJuliet {
if scene.hasPrefix("Act 1 ") {
act1SceneCount += 1
}
}
print("There are \(act1SceneCount) scenes in Act 1") // 5
문자열의 유니코드 표현
let dogString = "Dog‼🐶"
for utf8unit in dogString.utf8 {
print(utf8unit) //68 111 103 226 128 188 240 159 144 182
}
for utf16unit in dogString.utf16 {
print(utf16unit) //68 111 103 8252 55357 56374
}
for scalar in dogString.unicodeScalars {
print(scalar.value) //68 111 103 8252 128054
}
'iOS 개발 > Swift' 카테고리의 다른 글
[Swift 3] 흐름 제어 (Flow Control / for, while, if-else, switch, fallthrough, guard, label, available) (0) | 2017.04.13 |
---|---|
[Swift 3] 컬렉션 타입 (Collection Types_Array, Set, Dictionary) (0) | 2017.04.13 |
[Swift 3] 기본 연산자 (Basic Operators) (0) | 2017.04.12 |
[Swift 3] 기본사항 -2 (Optional, Error Handle) (0) | 2017.04.12 |
[Swift 3] 기본사항 -1 (상수, 변수, 자료형, Tuple) (0) | 2017.04.12 |
- Total
- Today
- Yesterday
- AWS
- set
- coredata
- NSManagedObjectContext
- 꺼내먹어요
- delegate
- optional
- Swift 3.0
- EffectiveObjectiveC
- HTTP
- 읽기 좋은 코드가 좋은 코드다
- Swift 3
- NSManagedObjectModel
- docker
- thread
- string
- CIImage
- ios
- CGImage
- UIView
- Swift
- Swfit
- applicationWillResignActive
- Block
- workerThread
- NSManagedObject
- Arc
- dictionary
- RunLoop
- Swift3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |