ݺߣ

ݺߣShare a Scribd company logo
Strings and characters in swift
Strings and characters in swift
String
String
String
String
String
String
Strings and characters in swift
Strings and characters in swift
String
Substring StringProtocol
String
Unicode
Strings and characters in swift
String
String
String
String
NSString
String
String Character
Character ?
==
String
UnicodeScalarView
UTF16View
UTF8View
let ?
NSString ?
NSString
NSString
NSString String
StringProtocol Substring
String
String
String
String
String Character
String.characters
String.CharacterView
Strings and characters in swift
String
Unicode.Scalar
Character
String
Unicode.UTF8 CodeUnit UInt8
Unicode.UTF16 CodeUnit UInt16
Unicode.UTF32 CodeUnit UInt32
String
?
"Dog??".count = 5
Character
D
U+0044
o
U+006F
g
U+0067
?
U+203C
?
U+1F436
Unicode
Scalar
(UTF-32)
D
U+0044
o
U+006F
g
U+0067
?
U+203C
?
U+1F436
0 1 2 3 4
UTF-16
0x44 0x6F 0x67 0x203C 0xD83D 0xDC36
0 1 2 3 4 5
UTF-8
0x44 0x6F 0x67 0xE2 0x80 0xBC 0xF0 0x9F 0x90 0xB6
0 1 2 3 4 5 6 7 8 9
?
" ? !?".count = 3
Character
?
U+72AC U+20E3 U+0021
?
U+2047
Unicode
Scalar
(UTF-32)
U+72AC
?
U+20E3
!
U+0021
?
U+2047
0 1 2 3
UTF-16
0x72AC 0x20E3 0x21 0x2047
0 1 2 3
UTF-8
0xE7 0x8A 0xAC 0xE2 0x83 0xA3 0x21 0xE2 0x81 0x87
0 1 2 3 4 5 6 7 8 9
String
String
String
String
NSString
String
NSString
NSString
NSString NSMutableString
NSString StringProtocol
NSUInteger NSRange String.Index Range
StringProtocol NSString
import Foundation
// StringProtocol (NSString API)
let str = "Dog??"
let range = str.range(of: "?")!
print(range) // Index(_compoundOffset: 16, _cache:
Swift.String.Index._Cache.utf16)..<Index(_compoundOffset: 24, _cache:
Swift.String.Index._Cache.utf16)
print(str[..<range.lowerBound]) // Dog?
// NSString
let nsStr = str as NSString
let nsRange = nsStr.range(of: "?")
print(nsRange) // {4, 2}
print(nsStr.substring(to: nsRange.location)) // Dog?
// Range <-> NSRange
print(range == Range(nsRange, in: str)) // true
print(NSRange(range, in: str) == nsRange) // true
String
NSString
Strings and characters in swift
"
"?" + [ZWJ] + "?" + [ZWJ] + "?" + [ZWJ] + "?"
"?" + [ZWJ] + "?" + [ZWJ] + "?" = "'"
Strings and characters in swift
String
NSString
== !=
String Character
"u{00E9}" == "u{0065}u{0301}" // "" == "e" + "?"
"u{2460}" == "u{0031}" // " " == "1"
==
"e" == "e"
lhs rhs
Character
e
U+0065
e
U+0065
UnicodeScalar
(UTF-32)
e
U+0065
e
U+0065
D?
(NFD)
U+0065 U+0065
Swift
==
true
NSString?
isEqual:
YES
"" == "e" + "?"
lhs rhs
Character

U+00E9

U+0065 U+0301
UnicodeScalar
(UTF-32)

U+00E9
e
U+0065
?
U+0301
D?
(NFD)
e
U+0065
?
U+0301
e
U+0065
?
U+0301
Swift
==
true
NSString?
isEqual:
NO
" " == " " + " "
lhs rhs
Character
U+304C U+304B U+0399
UnicodeScalar
(UTF-32) U+304C U+304B U+0399
D?
(NFD) U+304B U+0399 U+304B U+0399
Swift
==
true
NSString?
isEqual:
NO
"?" == "e" + "?" + "_"
lhs rhs
Character
?
U+00E9 U+0332
?
U+0065 U+0301 U+0332
UnicodeScalar
(UTF-32)

U+00E9
_
U+0332
e
U+0065
?
U+0301
_
U+0332
D?
(NFD)
e
U+0065
_
U+0332
?
U+0301
e
U+0065
_
U+0332
?
U+0301
Swift
==
true
NSString?
isEqual:
NO
" " == " "
lhs rhs
Character
CJK
U+FA10
CJK
U+585A
UnicodeScalar
(UTF-32) U+FA10 U+585A
D?
(NFD) U+585A U+585A
Swift
==
true
NSString?
isEqual:
NO
" " == " "
lhs rhs
Character
CJK
U+FA11
CJK
U+5D0E
UnicodeScalar
(UTF-32) U+FA11 U+5D0E
D?
(NFD) U+FA11 U+5D0E
Swift
==
false
NSString?
isEqual:
NO
" " == " "
lhs rhs
Character
CJK
U+585A U+585A U+E0100
UnicodeScalar
(UTF-32) U+585A U+585A U+E0100
D?
(NFD) U+585A U+585A U+E0100
Swift
==
false
NSString?
isEqual:
NO
String
NSString
Strings and characters in swift
Strings and characters in swift
String
String
NSString ?
?

More Related Content

Strings and characters in swift