Swift快速入门(五)

70 阅读2分钟

字符串

(一)初始化:
var a = "QWERTYUI"

print("\(a)")

var a1 = String("NBA")

print("\(a1)")

let value = #""hello world""#

print("输出带引号的字符串"+ value)

var value2 = """

Hello!

EveryOne,

My name is WangYangle

"""
print("带格式化的多行文本\n"+ value2)
获取字符串信息
var a = "QWERTYUI"
print( "(a)的长度= (a.count)" )
print("获取字符串的第一个字符 =\(a[a.startIndex])")

//直接使用a.endIndex会越界,因为是从0开始的
print("获取字符串的最后一个字符 =\(a[a.index(before: a. endIndex)])")

print("获取字符串的第一个字符的后一位 =\(a[a.index(after: a.startIndex)])")

print("获取任意位置的字符 =\(a[a.index(a.startIndex,offsetBy:3)])")

let b = a.index(a.startIndex,offsetBy:2)

let c = a.index(a.startIndex,offsetBy:4)

print("获取任意范围的字符串 =\(a[b...c])")//闭区间

print("获取任意范围的字符串 =\(a[b..<c])")//半闭区间**

let index = a.firstIndex(of:"Y") ?? a.endIndex//返回第一次出现Y的索引,如果字符串没有Y则返回最后一个index

print("获取任意范围的字符串 =\(a[a.startIndex ...index])")//闭区间

print("获取从0开始,长度为4的子字符串 =\(a.prefix(4))")

print("获取从0开始,长度为4的子字符串 =\(a.prefix(upTo: a.index(a.startIndex,offsetBy:4)))")
字符串的拼接
let a1 = "ABCD"
let a2 = String("EFGH")

var a3 = a1 + a2

var a4 = "\(a1)\(a2)"

var a4 = a1.appending(a2)
字符串的判断
let a1 = "ABCD"

let a2 = String("EFGH")

print("\(a1.isEmpty?"是空的字符串":"不是空的字符串")")

print("\(a1 == a2 ? "a1和a2相等":"a1和a2不相等")")

let index2 = a.index(a.endIndex,offsetBy: -2)

print("获取后2位的字符串 = \(a[index2..<a.endIndex])")//闭区间

print("判断是否包含某个字符 = \(a.contains("E"))")

print("判断是否包含某个字符串 = \(a.contains("ERT"))")

print("判断是否包含某个字符串 = \(a.contains(where:String.contains("QK")))")//只要有一个字符在a中,就返回true

print("判断是否包含某个字符串的前缀 = \(a.hasPrefix("W"))")

print("判断是否包含某个字符串的后缀 =\(a.hasSuffix("UI"))")
字符串的插入
var str = "Hello, World!"

str.insert("!"[...], at: str.index(str.startIndex, offsetBy: 7))

var charStr = "Hello"

charStr.insert("!"[...], at: charStr.index(before: charStr.endIndex))


var a1 = "ABCD"
a1.insert(contentsOf:"ABCD",at: a1.index(a1.startIndex,offsetBy:3))

print("在某个位置插入字符串 = \(a1)")
字符串的删除
var a1 = "ABCDEFGHIJKLMN"

newA.remove(at: newA.index(newA.startIndex,offsetBy:7))

print("删除某个字符串 = \(newA)")

newA.removeSubrange(newA.index(newA.startIndex,offsetBy:5)...newA.index(newA.startIndex,offsetBy:6))

print("删除指定范围的字符串 = \(newA)")

let newB = newA.trimmingCharacters(in: .whitespaces).replacingOccurrences(of:" ",with:"")

print("删除某个字符串的中的所有空格 = \(newB) ")
字符串的替换
var a = "ABCD"
let index3 = a.index(a.startIndex,offsetBy:1)

let index4 = a.index(a.startIndex,offsetBy:3)

let range = index3...index4

a.replaceSubrange(range,with:"OOOO")

print("在某个范围替换字符串 = \(a)")
var newA = a.replacingOccurrences(of:"BCD",with :"@&%")

print("替换某个字符串 = \(newA) ")
字符串的遍历
print("---------直接遍历--------------")

//1、直接遍历

let str ="ABCD"

for c in str{

  print("c=\(c)")

}

print("UTF-8 编码: ")
for code in str.utf8 {
   print("(code) ")
}

print("\n")

print("UTF-16 编码: ")
for code in str.utf16 {
   print("(code) ")
}


print("----------通过索引遍历-------------")

//2、通过索引遍历

for index in 0..<str.count{

  print("index=\(index),c =\(str[str.index(str.startIndex,offsetBy: index)])")

}

print("----------反向遍历-------------")

//反向遍历

for index in(0..<str.count ).reversed(){

  print("index=\(index),c =\(str[str.index(str.startIndex,offsetBy: index)])")

}