OC语言中,定义一个简单的字符可以通过char
类型
char ch = 'A'
char
类新只占一个字节,因此不能存储复杂的字符,比如汉子"中",复杂字符要用字符串的指针
char ch1[] = "中"
char *ch2 = "中"
Swift中用Character,使用起来会方便许多
创建单个字符,需要指定类型Character
let ch:Character = "A" // Character
let en = "A" // String
Character类型不允许存储多个字符
let chars:Character = "AB" // 编译器报错,Cannot convert value of type 'String' to specified type 'Character'
也不允许存储空字符,特殊字符需要转义
let char:Character = "" // 编译器报错,Cannot convert value of type 'String' to specified type 'Character'
let char:Character = Character("") //能绕过编译器检查,但是运行起来就报异常
转义的特殊字符
\0
(空字符)、\\
(反斜杠)、\t
(水平制表符)、\n
(换行)、\r
(回车)、\"
(双引号)和\'
(单引号)
或者任意Unicode标量值,格式为"\u{N}",N位 十六进制数
let en:Character = "\u{41}" // A
字符的编码值
对于单字符,可以通过asciiValue
属性获取ASCII码值
属性asciiValue
获取单个字符的ASCII码值
en.asciiValue // Optional(65)
由于UTF-8兼容ASCII,单字符也可以通过utf8.first
获取ASCII码值
en.utf8.first // Optional(65)
超出ASCII范围的字符返回nil,使用的时候需要注意
let en:Character = "😊"
print(en.asciiValue) // nil
String转字符
String遵守Sequence协议,可通过for-in 遍历字符串,得到Character字符
for character in "Dog!🐶" {
print(character) // D o g ! 🐶
}
String可以用Character类型数组初始化
let characters:[Character] = ["D","o","g","!","🐶"]
var string = String(characters) //Dog!🐶
不能直接通过 + 拼接到字符串,需要通过append(:)
string.append(ch) // Dog!🐶A
数组Array有个初始化方法,可以把Sequence转换成数组
let chars = Array(string)
print(chars) // ["H", "e", "l", "l", "o", " ", "w", "o", "r", "d", "!"]
字符比较
字符Character遵守Comparable协议,字符比较是根据编码值比较
let lch = "A" // 65
let rch = "B" //66
lch > rch // false
遵守Comparable协议另一个特点是可以使用范围Range
let charRange = Character("A")..<Character("Z")
print(charRange) //A..<Z
字符转数字
数字字符属于单字符,可以使用ASCII码减去0字符
let numCh:Character = "5"
// 这里确定强制解包不会出错
let num = numCh.asciiValue! - Character("0").asciiValue!
print(num) // 5
swift提供了特定的初始化方法
Int("5") //Optional(5)
Float("5.0") // Optional(5.0)
isNumber用以判断一个字符是否是数字,不仅可以判断简单的字符,还可以是复杂的字符
let numCh:Character = "7"
numCh.isNumber // true
let complexCh:Character = "⅚"
complexCh.isNumber // true
// 1⃣️,十,㊈ isNumber判断都是true
Character简单介绍就到这里。陆续补充中。。。。。。
网友评论