Swift 字符串字面量(String literal)介绍
字符串字面量(string literal)是一段双引号
括起来的多字节字符序列
,C/C++将其实现为具有静态存储连续性的字符数组。那么他属于字符串常量吗? C中的常量只包括下列四种:
- 整数常量、浮点常量、枚举常量和字符常量
在Swift中, 每个字符由一个或多个Unicode标量(Unicode scalar)
, 一个Unicode标量对应某种给定语言中的一个基本字符.
let oneCode = "\u{1F60E}" // 这是一个笑脸, 引号内部是 Unicode标量(Unicode scalar), 他是21位的数, 表示Unicode标准中的一个特定字符
let twoCode = "\u{0061}" // 大括号里面是十六进制数
let s = "hello,world"
for scalar in s.unicodeScalars {
// print(scalar.value) Unicode标量的十进制数
// 104 101 108 108 111 44 119 111 114 108 100
// let hexValue = String(scalar.value, radix: 16, uppercase: false)
// print(hexValue) Unicode标量的十六进制数
// 68 65 6c 6c 6f 2c 77 6f 72 6c 64
}
print("\u{0068},\u{0065},\u{006c},\u{006c},\u{006f}") // h, e, l, l, o
Swift 字符串截取
index 为 String.Index 类型
let newStr = String(str[..<index]) // = str.substring(to: index) In Swift 3
let newStr = String(str[index...]) // = str.substring(from: index) In Swif 3
let newStr = String(str[range]) // = str.substring(with: range) In Swift 3
细节用法
var str: String = "0123456789"
let start = str.index(str.startIndex, offsetBy: 3);
let str1 = String(str[start...])
print(str1) //3456789
let end = str.index(str.endIndex, offsetBy: -3)
let str2 = String(str[..<end])
print(str2) //0123456
let range = Range<String.Index>(uncheckedBounds: (lower: start, upper: end))
let str3 = String(str[range])
print(str3) //3456
由以上可以直接写分类