Slide 1

Slide 1 text

SwiftͷStringͷจࣈͷ ਺͑ํΛ׬શཧղ͢Δ Takanori Hirobe @taka1068

Slide 2

Slide 2 text

• ኍ෦ وಙ • ϑΣϯϦϧגࣜձࣾॴଐ ࣗݾ঺հ

Slide 3

Slide 3 text

ࣗݾ঺հ • ኍ෦ وಙ • ϑΣϯϦϧגࣜձࣾॴଐ ΰʔϧυεϙϯαʔ

Slide 4

Slide 4 text

ࣗݾ঺հ • ኍ෦ وಙ • ϑΣϯϦϧגࣜձࣾॴଐ ΰʔϧυεϙϯαʔ Ϙτϧ΢Υʔλʔεϙϯαʔ

Slide 5

Slide 5 text

ࣗݾ঺հ • ኍ෦ وಙ • ϑΣϯϦϧגࣜձࣾॴଐ ΰʔϧυεϙϯαʔ Ϙτϧ΢Υʔλʔεϙϯαʔ

Slide 6

Slide 6 text

ΞδΣϯμ - SwiftͷStringʹ͍ͭͯ - Unicodeʹ͍ͭͯ - Stringͱཁૉͷஔ͖׵͑ʹ͍ͭͯ

Slide 7

Slide 7 text

ΞδΣϯμ -SwiftͷStringʹ͍ͭͯ - Unicodeʹ͍ͭͯ - Stringͱཁૉͷஔ͖׵͑ʹ͍ͭͯ

Slide 8

Slide 8 text

print("Hello, iOSDC!")

Slide 9

Slide 9 text

String

Slide 10

Slide 10 text

String Value Type Bridges to NSString

Slide 11

Slide 11 text

String Value Type UTF-8 Encoded Hashable Bridges to NSString

Slide 12

Slide 12 text

String Value Type UTF-8 Encoded Equatable Hashable Bridges to NSString Collection

Slide 13

Slide 13 text

String Value Type UTF-8 Encoded Equatable Hashable Bridges to NSString Collection

Slide 14

Slide 14 text

Collection

Slide 15

Slide 15 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑"

Slide 16

Slide 16 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" let first = array[0]

Slide 17

Slide 17 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" let first = array[0] let first = array[array.startIndex] or better

Slide 18

Slide 18 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" let first = array[0]

Slide 19

Slide 19 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" let first = array[0] Int ഑ྻͷཁૉͷܕ

Slide 20

Slide 20 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int

Slide 21

Slide 21 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int let first = string[0]

Slide 22

Slide 22 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int let first = string[0]

Slide 23

Slide 23 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int let first = string[string.startIndex]

Slide 24

Slide 24 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int let first = string[string.startIndex] String.Index Character

Slide 25

Slide 25 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int let startIdx = str.startIndex let index = str.index(startIdx, offsetBy: 5) let fifthChar = str[index]

Slide 26

Slide 26 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int let startIdx = str.startIndex let index = str.index(startIdx, offsetBy: 5) let fifthChar = str[index]

Slide 27

Slide 27 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character

Slide 28

Slide 28 text

Collection var array = [ , 20, 30, 40, 50] var string = “ bc͍͋͏͓͑” ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character 10 Λ 100 ʹม͑Δ a Λ X ʹม͑Δ a 10

Slide 29

Slide 29 text

Collection X 100 var array = [ , 20, 30, 40, 50] var string = “ bc͍͋͏͓͑” ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character

Slide 30

Slide 30 text

Collection var array = [100, 20, 30, 40, 50] var string = "Xbc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character array[0] = 100

Slide 31

Slide 31 text

Collection var array = [100, 20, 30, 40, 50] var string = "Xbc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character array[0] = 100 "

Slide 32

Slide 32 text

Collection var array = [100, 20, 30, 40, 50] var string = "Xbc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character

Slide 33

Slide 33 text

Collection var array = [100, 20, 30, 40, 50] var string = "Xbc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character string[string.startIndex] = "X"

Slide 34

Slide 34 text

Collection var array = [100, 20, 30, 40, 50] var string = "Xbc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character string[string.startIndex] = "X" #

Slide 35

Slide 35 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈʹΑΔมߋ: OK ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character ఴࣈʹΑΔมߋ: NG

Slide 36

Slide 36 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈʹΑΔมߋ: OK ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character ఴࣈʹΑΔมߋ: NG

Slide 37

Slide 37 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈʹΑΔมߋ: OK ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character ఴࣈʹΑΔมߋ: NG

Slide 38

Slide 38 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈʹΑΔมߋ: OK ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character ఴࣈʹΑΔมߋ: NG count͸5 count͸8

Slide 39

Slide 39 text

Collection let array = [10, 20, 30, 40, 50] let string = "abc͍͋͏͓͑" ఴࣈΞΫηε: Int ཁૉͷܕ: Int ఴࣈʹΑΔมߋ: OK ఴࣈΞΫηε: String.Index ཁૉͷܕ: Character ఴࣈʹΑΔมߋ: NG

Slide 40

Slide 40 text

ಉ͡Collectionͱ͍ͬͯ΋ѻ͍ํ ͕গ͠ҧ͏ - Stringͷํ͕ѻ͍ʹ͍͘

Slide 41

Slide 41 text

ΞδΣϯμ - SwiftͷStringʹ͍ͭͯ -Unicodeʹ͍ͭͯ - Stringͱཁૉͷஔ͖׵͑ʹ͍ͭͯ

Slide 42

Slide 42 text

ʮͺʯͱ͍͏จࣈΛ
 UnicodeͰද͢ ྫ

Slide 43

Slide 43 text

ͺ ͺ let pa1 = “…” let pa2 = “…” print(pa1, pa2) // ͺ ͺ

Slide 44

Slide 44 text

ͺ ͺ let pa1 = “…” let pa2 = “…” print(pa1, pa2) // ͺ ͺ

Slide 45

Slide 45 text

ͺ ͺ จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 46

Slide 46 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 47

Slide 47 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A ʮͺʯΛද͢εΧϥ஋(͋Δछͷූ߸)୯ମͰʮͺʯΛද͢

Slide 48

Slide 48 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 49

Slide 49 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A ʮ͸ʯͱʮ㿇 ʯΛ૊Έ߹ΘͤͯʮͺʯΛද͢ɻ

Slide 50

Slide 50 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 51

Slide 51 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 52

Slide 52 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 53

Slide 53 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 54

Slide 54 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 55

Slide 55 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 56

Slide 56 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 57

Slide 57 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 58

Slide 58 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 59

Slide 59 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 60

Slide 60 text

จࣈ ͺ ͺ Unicode
 Scalar ͺ U+3071 ͸ U+306F 㿇 U+309A

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

จࣈ $ & Unicode
 Scalar U+1F469 U+200D U+1F692 U+1F3E3 U+1F1EF U+1F1F5

Slide 66

Slide 66 text

จࣈ $ & Unicode
 Scalar U+1F469 U+200D U+1F692 U+1F3E3 U+1F1EF U+1F1F5

Slide 67

Slide 67 text

֦ுॻهૉΫϥελ

Slide 68

Slide 68 text

֦ுॻهૉΫϥελ • ӳޠͰ͸ Extended Grapheme Cluster

Slide 69

Slide 69 text

https://developer.apple.com/documentation/swift/character

Slide 70

Slide 70 text

https://developer.apple.com/documentation/swift/character

Slide 71

Slide 71 text

https://developer.apple.com/documentation/swift/character

Slide 72

Slide 72 text

https://developer.apple.com/documentation/swift/character

Slide 73

Slide 73 text

֦ுॻهૉΫϥελ • ӳޠͰ͸ Extended Grapheme Cluster • SwiftͷCharacterܕʹ֘౰

Slide 74

Slide 74 text

֦ுॻهૉΫϥελ • ӳޠͰ͸ Extended Grapheme Cluster • SwiftͷCharacterܕʹ֘౰ • Ϣʔβʔʹͱͬͯͷʮ1จࣈʯ

Slide 75

Slide 75 text

"\r\n"͸1จࣈ

Slide 76

Slide 76 text

https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries

Slide 77

Slide 77 text

งғؾΛײͯ͡ΈΔ

Slide 78

Slide 78 text

งғؾΛײͯ͡ΈΔ "ͺa\r\n&"

Slide 79

Slide 79 text

U+306F U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 80

Slide 80 text

U+306F U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 1 2 3 4

Slide 81

Slide 81 text

U+306F U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 82

Slide 82 text

U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F

Slide 83

Slide 83 text

U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 84

Slide 84 text

U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 85

Slide 85 text

U+309A U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 86

Slide 86 text

U+309A: ʮ ʄʯ U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 87

Slide 87 text

U+309A: ʮ ʄʯ U+0A U+1F146 U+200D U+1F692 U+61 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ Nonspacing Mark

Slide 88

Slide 88 text

U+61 U+309A: ʮ ʄʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 89

Slide 89 text

U+61 U+309A: ʮ ʄʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 90

Slide 90 text

U+61: ʮaʯ U+309A: ʮ ʄʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ

Slide 91

Slide 91 text

U+61: ʮaʯ U+309A: ʮ ʄʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 U+306F: ͻΒ͕ͳͷʮ͸ʯ ͺ

Slide 92

Slide 92 text

U+61: ʮaʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 93

Slide 93 text

U+61: ʮaʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 94

Slide 94 text

U+61: ʮaʯ U+0A U+1F146 U+200D U+1F692 U+0D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 95

Slide 95 text

U+61: ʮaʯ U+0A U+1F146 U+200D U+1F692 U+0D: Carriage Return จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 96

Slide 96 text

U+61: ʮaʯ U+0A U+1F146 U+200D U+1F692 U+0D: Carriage Return จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 a

Slide 97

Slide 97 text

U+0A U+1F146 U+200D U+1F692 U+0D: Carriage Return จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 98

Slide 98 text

U+1F146 U+200D U+1F692 U+0D: Carriage Return U+0A จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 99

Slide 99 text

U+1F146 U+200D U+1F692 U+0D: Carriage Return U+0A จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 100

Slide 100 text

U+1F146 U+200D U+1F692 U+0D: Carriage Return U+0A: Line Feed จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 101

Slide 101 text

U+1F146 U+200D U+1F692 U+0D: Carriage Return U+0A: Line Feed จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 \r\n ͷ૊Έ߹Θͤ͸ ಛผѻ͍

Slide 102

Slide 102 text

U+1F146 U+200D U+1F692 จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 103

Slide 103 text

U+200D U+1F692 U+1F1EF จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 104

Slide 104 text

U+200D U+1F692 U+1F1EF จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 105

Slide 105 text

U+200D U+1F692 U+1F1EF: จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 J

Slide 106

Slide 106 text

U+200D U+1F692 U+1F1EF: จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 ࠃίʔυͷʮJʯ J

Slide 107

Slide 107 text

U+200D U+1F1EF: U+1F1F5 จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 J

Slide 108

Slide 108 text

U+200D U+1F1EF: U+1F1F5 จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 J

Slide 109

Slide 109 text

U+200D U+1F1EF: U+1F1F5: จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 J P

Slide 110

Slide 110 text

U+200D U+1F1EF: U+1F1F5: จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 J P ࠃίʔυʮJʯ+ʮPʯ Ͱ೔ຊ

Slide 111

Slide 111 text

U+200D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5

Slide 112

Slide 112 text

U+200D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 1 2 3 4

Slide 113

Slide 113 text

U+200D จࣈ ͺ a \r \n & Unicode
 Scalar U+306F U+309A U+61 U+0D U+0A U+1F1EF U+1F1F5 1 2 3 4 ΋͠\nͰ͸ͳͯ͘ʮbʯ ͩͬͨΒ

Slide 114

Slide 114 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4

Slide 115

Slide 115 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4 \r ͱ b ͸݁߹͠ͳ͍

Slide 116

Slide 116 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4 5

Slide 117

Slide 117 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4 5 4จࣈ໨ͩͬͨ΋ͷ͕ 5จࣈ໨ʹ

Slide 118

Slide 118 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4 5 N൪໨ͷจࣈΛ஌ΔͨΊʹ͸ɺ ͦͷલʹ͋ΔจࣈΛ஌Δඞཁ͕͋Δɻ

Slide 119

Slide 119 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4 5 N൪໨ͷจࣈΛ஌ΔͨΊʹ͸ɺ ͦͷલʹ͋ΔจࣈΛ஌Δඞཁ͕͋Δɻ ‑ N൪໨ͷจࣈΛऔಘ͢ΔͨΊͷܭࢉྔ͸O(N)

Slide 120

Slide 120 text

U+200D จࣈ ͺ a \r b & Unicode
 Scalar U+306F U+309A U+61 U+0D U+62 U+1F1EF U+1F1F5 1 2 3 4 5 N൪໨ͷจࣈΛ஌ΔͨΊʹ͸ɺ ͦͷલʹ͋ΔจࣈΛ஌Δඞཁ͕͋Δɻ ‑ N൪໨ͷจࣈΛऔಘ͢ΔͨΊͷܭࢉྔ͸ O(N)

Slide 121

Slide 121 text

ܭࢉྔ ܭࢉʹ͔͔Δ࣌ؒ จࣈͷҐஔ

Slide 122

Slide 122 text

ܭࢉྔ ܭࢉʹ͔͔Δ࣌ؒ จࣈͷҐஔ O(N)

Slide 123

Slide 123 text

String͸Collectionʹ४ڌ • ఴࣈΞΫηεͷܭࢉྔ͸O(1)Ͱͳ͍ͱ͍͚ͳ͍

Slide 124

Slide 124 text

ܭࢉྔ ܭࢉʹ͔͔Δ࣌ؒ จࣈͷҐஔ O(N)

Slide 125

Slide 125 text

ܭࢉྔ ܭࢉʹ͔͔Δ࣌ؒ จࣈͷҐஔ O(N) Collectionϓϩτίϧͷ ཁ੥

Slide 126

Slide 126 text

ܭࢉྔ ܭࢉʹ͔͔Δ࣌ؒ จࣈͷҐஔ IntͰఴࣈΞΫηεͨ͠ͱ͖ʹ͔ ͔Δ࣌ؒ O(N) Collectionϓϩτίϧͷ ཁ੥ O(1)

Slide 127

Slide 127 text

ܭࢉྔ ܭࢉʹ͔͔Δ࣌ؒ จࣈͷҐஔ IntͰఴࣈΞΫηεͨ͠ͱ͖ʹ͔ ͔Δ࣌ؒ O(N) Collectionϓϩτίϧͷ ཁ੥ O(1) String͸IntͰ͸ఴࣈΞΫηε Ͱ͖ͳ͍

Slide 128

Slide 128 text

StringͷఴࣈΞΫηεʹ͍ͭͯ

Slide 129

Slide 129 text

String.Index StringͷఴࣈΞΫηεʹ͍ͭͯ

Slide 130

Slide 130 text

String.Index StringͷఴࣈΞΫηεʹ͍ͭͯ ࢝఺͔ΒͷΦϑηοτ

Slide 131

Slide 131 text

ΞδΣϯμ - SwiftͷStringʹ͍ͭͯ - Unicodeʹ͍ͭͯ -Stringͱཁૉͷஔ͖׵͑ʹ͍ͭͯ

Slide 132

Slide 132 text

ཁૉͷஔ͖׵͕͑Ͱ͖ͳ͍

Slide 133

Slide 133 text

Array String " #

Slide 134

Slide 134 text

Array String " # ఴࣈΞΫηεͰsetͰ͖Δ ఴࣈΞΫηεͰsetͰ͖ͳ͍

Slide 135

Slide 135 text

Array String " # ఴࣈΞΫηεͰsetͰ͖Δ ఴࣈΞΫηεͰsetͰ͖ͳ͍ MutableCollectionʹ४ڌ͍ͯ͠Δ MutableCollectionʹ४ڌ͍ͯ͠ͳ͍

Slide 136

Slide 136 text

Array String " # ఴࣈΞΫηεͰsetͰ͖Δ ఴࣈΞΫηεͰsetͰ͖ͳ͍ MutableCollectionʹ४ڌ͍ͯ͠Δ MutableCollectionʹ४ڌ͍ͯ͠ͳ͍

Slide 137

Slide 137 text

Sequence Collection MutableCollection

Slide 138

Slide 138 text

Sequence Collection MutableCollection - ఴࣈΞΫηεʹΑΔgetΛ ఆٛ - ఴࣈΞΫηεʹΑΔsetΛ ఆٛ

Slide 139

Slide 139 text

Sequence Collection MutableCollection - ఴࣈΞΫηεʹΑΔgetΛ ఆٛ - ఴࣈΞΫηεʹΑΔsetΛ ఆٛ ܭࢉྔ͸O(1) ͲͪΒ΋ܭࢉྔ͸O(1)

Slide 140

Slide 140 text

Sequence Collection MutableCollection String Sequence Collection MutableCollection Array

Slide 141

Slide 141 text

Sequence Collection MutableCollection String Sequence Collection MutableCollection Array ఴࣈΞΫηεʹΑΔset ͕O(1)Ͱ࣮ݱͰ͖ͳ͍͔Β

Slide 142

Slide 142 text

จࣈ ͏ a b c Unicode
 Scalar U+3046 U+61 U+62 U+63 var string = “͏abc" string[string.startIndex] = "X"

Slide 143

Slide 143 text

จࣈ ͏ a b c Unicode
 Scalar U+3046 U+61 U+62 U+63 var string = “͏abc" string[string.startIndex] = "X"

Slide 144

Slide 144 text

จࣈ X a b c Unicode
 Scalar U+58 U+61 U+62 U+63 var string = “͏abc" string[string.startIndex] = "X"

Slide 145

Slide 145 text

จࣈ ͏ a b c Unicode
 Scalar U+3046 U+61 U+62 U+63 จࣈ X a b c Unicode
 Scalar U+58 U+61 U+62 U+63

Slide 146

Slide 146 text

จࣈ ͏ a b c Unicode
 Scalar U+3046 U+61 U+62 U+63 UTF-8 E3 81 85 61 62 63 จࣈ X a b c Unicode
 Scalar U+58 U+61 U+62 U+63 UTF-8 58 61 62 63

Slide 147

Slide 147 text

จࣈ ͏ a b c Unicode
 Scalar U+3046 U+61 U+62 U+63 UTF-8 E3 81 85 61 62 63 จࣈ X a b c Unicode
 Scalar U+58 U+61 U+62 U+63 UTF-8 58 61 62 63

Slide 148

Slide 148 text

จࣈ ͏ a b c Unicode
 Scalar U+3046 U+61 U+62 U+63 UTF-8 E3 81 85 61 62 63 όΠτ෯ 3 1 1 1 จࣈ X a b c Unicode
 Scalar U+58 U+61 U+62 U+63 UTF-8 58 61 62 63 όΠυ෯ 1 1 1 1

Slide 149

Slide 149 text

No content

Slide 150

Slide 150 text

1όΠτ

Slide 151

Slide 151 text

a b c ͏

Slide 152

Slide 152 text

a b c ͏ a b c X

Slide 153

Slide 153 text

a b c ͏ a b c X

Slide 154

Slide 154 text

a c b ͏ b c a X ೖΕସ͑ͨจࣈͷҎ߱ͷจࣈͷόΠτྻΛҠಈ͢Δඞཁ͕͋Δ ‑ ఴࣈΞΫηεʹΑΔ set ͷܭࢉྔ͸O(N)

Slide 155

Slide 155 text

·ͱΊ - ҰͭͷCharacterͷ಺෦දݱ͕ͦΕͧΕҟͳΔͷͰɺ CharacterͷऔಘͱೖΕସ͑ͷܭࢉྔ͕O(1)ʹͳΒͳ͍ - IntͰఴࣈΞΫηεͰ͖ͳ͍ - MutableCollectionʹ४ڌ͠ͳ͍