- 字符
- 创建字符串
- 字符串的拼接
- 字符串插入、删除和替换
- 字符串比较
字符
在Java、C、C++和Objective-C等大多数语言中,字符是放在单引号(')之间的。而在Swift语言中,我们不能使用单引号方式,必须使用双引号(")把字符括起来。而Swift中的字符串也使用双引号(")把字符括起来。
Unicode编码
Unicode编码可以有单字节编码、双字节编码和四节编码,它们的表现形式是\u{n}, 其中n为1-8个十六进制数。
Unicode编码可以在http://vazor.com/unicode/网站查询字符与编码的对应关系。
下面的输出结果是一样的。都是ଖ
var str3 = "ଖ"
print(str3)
var str4 = "\u{0B16}"
print(str4)
转义符
字符表示 | Unicode编码 | 说明 |
---|---|---|
\t |
\u{0009} | 水平制表符tab |
\n |
\u{000a} | 换行 |
\r |
\u{000d} | 回车 |
\" |
\u{0022 | 双引号 |
\' |
\u{0027} | 单引号 |
\\ |
\u{005c} | 反斜线 |
/**
转义字符
**/
let specialCharTab1 = "Hello\tWorld."
print("specialCharTab1:\(specialCharTab1)")
let specialCharNewLine = "Hello\nWorld."
print("specialCharTab1:\(specialCharNewLine)")
let specialCharReturn = "Hello\rWorld."
print("specialCharTab1:\(specialCharReturn)")
let specialCharQuotationMark = "Hello\"World\"."
print("specialCharTab1:\(specialCharQuotationMark)")
let specialCharApostrophe = "Hello\'World\'."
print("specialCharTab1:\(specialCharApostrophe)")
let specialCharReverseSolidus = "Hello\\World."
print("specialCharTab1:\(specialCharReverseSolidus)")
打印结果为:
image.png
创建字符串
在Swift中字符串的类型是String, String是一个结构体。
提示:
在OS X和iOS应用开发中有一个基础框架———Foundation框架,这个框架中也有字符串类型NSString。NSString是一个类,而非结构体。因此提到字符串事应该明确是Swift中原生字符串String, 还是Foundation框架中的字符串NSString。为了能够使它们互相转化,苹果公司提供一种 "零开销桥接技术"
使得互相转化更加低成本、更加简单。
/**
字符串的拼接
**/
let str5 = "Hello world!"
let count = str5.count
print(count)
let 🌍 = "🐶🐎🐱🐭🐰🐻🐼🐂🐫🐛🐝"
print("已经上传的小动物数: \(🌍.count)")
let 熊 = "🐻"
let 猫 = "🐱"
let 🐼 = 熊 + 猫 //字符串拼接
//声明空字符串
let emptyString = ""
let emptyString2 = String() //也可以调用String的结构体的构造函数来创建一个空的字符串
注意:
字符串的类型是String类型,String类型是一个结构体,结构体的实例化和创建它的实例的方式就是加(), 加括号其实就是调用它的结构体的构造函数,也就是通过它的构造函数来创建一个字符串,只不过是创建了一个空的字符串。
字符串的拼接
可变字符串
在Swift中通过let声明的字符串常量是不可变字符串,var声明的字符串常量是可变字符串。
提示:Foundation框架中也有可变字符串类型是NSMutableString, NSMutableString继承于NSString。
字符串拼接
- String字符串之间的拼接可以使用+ 和+=运算符。
- String字符串与字符拼接可以使用String的append(_:Character)方法。
/**
字符串的拼接
**/
//+和+= 只能针对于String类型的追加
var livingThings = "🐶🐎🐱🐭🐰🐻🐼🐂🐫🐛🐝"
livingThings = livingThings + "👦" //“👦”是字符串类型String
livingThings += "👧"
//Character即字符不能使用+= 或者+ 来拼接
//append只能针对于字符类型的追加,在尾部加上
var flower: Character = "🌺"
livingThings.append(flower)
print("生物数: \(livingThings.count)")
let number = 9
let total = "\(number)加10等于\(Double(number) + 10)"
字符串的插入,删除和替换
/**
字符串插入、删除和替换
**/
var str6 = "Objective-C and Swift"
print("原始字符串:\(str6)")
//插入字符
str6.insert(".", at: str6.endIndex)
print("插入.字符后:\(str6)")
//访问其结束前一个字符,在Swift3.0 predecessor使用以下代替:
str6.remove(at: str6.index(before: str6.endIndex))
print("删除.字符后:\(str6)")
//访问其开始后一个字符, 在Swift3.0 advancedBy使用以下代替:
var startIndex = str6.startIndex
var endIndex = str6.index(str6.startIndex, offsetBy:9)
var range = startIndex...endIndex
//删除范围
str6.removeSubrange(range)
print("删除范围后:\(str6)")
//访问其开始后一个字符, 在Swift3.0 successor使用以下代替:
startIndex = str6.startIndex
endIndex = str6.index(after: str6.startIndex)
range = startIndex...endIndex
//替换范围
str6.replaceSubrange(range, with: "C++")
print("替换范围后:\(str6)")
打印结果如下:
image.png
字符串的比较
字符串类型与整型和浮点型一样,都可以进行相等以及大小的比较,
比较的依据是Unicode编码值大小。比较相等运算符==或!=。
提示:Swift字符Character和字符串String都是结构体类型,只能使用==或!=比较是否相等或不等。而Foundation框架中的NSString字符串的比较是否相等或不等,则需要使用===或!==运算符。
/**
字符串的比较
**/
let 熊1 = "🐻"
let 猫1 = "🐱"
if 熊1 > 猫1 {
print("🐻 大于 🐱")
}else {
print("🐻 小于 🐱")
}
let 🐼1 = 熊1 + 猫1
if 🐼1 == "🐻🐱" {
print("🐼1 是🐻🐱")
}else {
print("🐼1 不是🐻🐱")
}
let emptyString3 = ""
let emptyString4 = String()
if emptyString3 == emptyString4 {
print("emptyString3 与 emptyString4 相等")
}else {
print("emptyString3 与 emptyString4 不bu相等")
}
let emptyString5: NSString = ""
let emptyString6: NSString = ""
//NSString与String可以相互转换 即 “零开销桥接技术”, 下面要是 写成"==" 就是利用这种技术,正常情况下应该写成“===”
if emptyString5 === emptyString6 {
print("emptyString5 与 emptyString6 相等")
}else {
print("emptyString5 与 emptyString6 不bu相等")
}
var aa = "aa"
var bb = "bb"
if aa > bb {
print("aa > bb")
}else {
print("aa < bb")
}
打印结果如下:
image.png
网友评论