插值字符串中写在括号中的表达式不能包含非转义反斜杠(),并且不能包含回车,不过,插值字符串可以包含其他字面量
Swift的char类型是基于Unicode标量建立的,几乎涵盖了全球的字符,
Oc我记得好像是SCIII什么的...忘了
var a = "12\\"
print(a)
a = "12\0"
print(a)
let a2 = Int(a)
print(a2)
a = "12"
let a3 = Int(a)
print(a3)
// 结果
/*
12\
12�
nil , 因为转义字符\0是空字符,这个a实际上是12+空字符,所以转出来是nil
Optional(12)
*/
如果不想换行,可以传递一个空字符串给terminator参数
如:
let greeting = "Guten Tag!"
// .indices属性是创造了一个含有这个字符串的所有范围,
// 在swift里面,字符串不能用整数(integer)做索引,如果写了,直接报错
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// 结果
// G u t e n T a g !
Swift中String不可以直接用Int类型的下表来取出单个Char
那么
let num1 = greeting.startIndex.advancedBy(7)
print("\n\(num1)")
let a5 = greeting[num1]
print(a5)
这是可以打印出来的,但是这个num1的类型,不是Int,是Index类型,不知道这是个什么玩意儿..
String 比较
如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等的,那就认为它们是相等的。
例如
let c = "\u{E9}"
print(c)
let d = "\u{65}\u{301}"
print(d)
// 打印结果都是é,
// 这两个方式都是é的有效表达方式,所以认为两者相等
// 但是,英文的A和俄语中的A意思不同,所以即使打印看着一样,两者也是不等的
let latinCapitalLetterA: Character = "\u{41}" // 英语
let cyrillicCapitalLetterA: Character = "\u{0410}" // 俄语
if latinCapitalLetterA != cyrillicCapitalLetterA {
print("These two characters are not equivalent")
}
// 打印 "These two characters are not equivalent"
在 Swift 中,字符串和字符并不区分地域(not locale-sensitive)。
String前缀和后缀
hasPrefix(:)/hasSuffix(:)
接收一个String类型的参数,返回一个Bool值
网友评论