Swift系列3-字符和字符串

字符

字符:单一的字符字符串字面量,用””表示;
Character关键字,只能放置一个字符,放置多个字符时,编译器会报错;
书写字符时,标明当前类型,不然会默认是字符串;

1
2
let c1:Character = "a";print(c1) //a
var c2:Character = "b";c2 = "d";print(c2) //d

字符串

字符串:一系列的字符拼接而成;
关键字:String
使用””来表示字符串;

1
2
3
4
5
6
7
8
9
//字符串
let str1 = "abcde";print(str1)
//for循环,输出每一个独立的Character值
for c in str1 {
print("str1每一个字节是:\(c)") //a b c d e
}
//通过都是字节的数组来组成字符串
let arr:[Character] = ["z","s","j","几"]
let ss = String(arr);print(ss) //zsj几

初始化字符串

1
2
3
4
5
6
7
//初始化空字符串
var new1 = ""
var new2:Sting?
//字符串常量
let new3 = "这是一个字符串"
//字符串变量
var new4 = "新的字符串"

字符串长度

1
let strCount = "string";print("字符串的个数是\(strCount.count)")

字符串比较

字符串的比较:相等 == ,不相等 !=

1
2
3
4
5
6
if a1 == a2 {
print("字符串相等")
}
if a1 != a2 {
print("字符串不相等")
}

字符串拼接

字符串插值\():字符串插值是一种混合常量,变量,字面量,和表达式的字符串字面量构造的新字符串;

1
2
3
4
var v1 = "hello"
v1.append("world")//append方法 helloworld
v1 = v1 + "!!" //使用符号: + helloworld!!
v1 = "hi \(v1)" //字符串插值的方式 hi helloworld!!

字符串格式化

1
2
3
4
5
6
7
8
let int1:Int = 10
let flo1:Float = 10.11
let _ = String(int1) // 整型转字符串
let _ = String(flo1) //浮点型转字符串
let l1 = String(format: "小数截取%.2f", 9.9999);print(l1) //浮点型获取精度
let l2 = String(format: "game %@", "over");print(l2) //字符串拼接格式化
let l3 = String(format: "课程%d", 1);print(l3) //整型拼接
let l4 = String(format: "价格%f", 9.099);print(l4) //浮点型拼接

判断字符串是否为空

1
2
3
4
let em1 = "not empty"
let em2 = ""
print(em1.isEmpty)//false
print(em2.isEmpty)//true

遍历字符串

1
2
3
4
let q1 = "what is people?"
for c in q1 {
print(c)//w h a t i s p e o p l e ?
}

获取首个字符

1
2
var newString = "newString"
print(newString[newString.startIndex])//获取首个字符:n

删除首个字符

1
print(newString.removeFirst())//ewString

删除最后一个字符

1
print(newString.removeLast())//ewStrin

删除指定位置

1
2
var AB = "ABCDEFG"
AB.remove(at: AB.index(AB.startIndex, offsetBy: 2))//结果:ABDEFG

删除所有内容

1
AB.removeAll() //字符串会变成空nil

删除头尾指定位数内容

1
2
3
var g1 = "ABCDEF"
g1.removeFirst(2)//CDEF
g1.removeLast(2)//CD

判断字符串是否包含另外一个字符串

1
2
3
let con1 = "hello"
let con2 = "hello world"
print(con2.contains(con1))//true

字符串分割为数组

需要使用特定的字符或者字符串进行分割

1
2
3
let myStr = "game,over!"
let arr1 = myStr.split(separator: ",") //使用字符,进行分割,分割结果是一个数组
print(arr1) //["game","over!"]

数组拼接为字符串

1
2
print(arr1.joined()) // "gameover!"
print(arr1.joined(separator: "---")) // "game---over!" ,元素之间插入字符串

字符串截取

头部截取

1
2
let subStr = "abcdefghijk"
print(subStr.prefix(2)) //ab

尾部截取

1
print(subStr.suffix(2)) //jk

range截取

1
2
3
4
let index1 = subStr.index(subStr.startIndex, offsetBy: 3)
let index2 = subStr.index(subStr.startIndex, offsetBy: 5)
let sob = subStr[index1...index2]
print(sob) //def 包含下标3和下标5

指定位置截取

1
2
3
let r1 = subStr.range(of: "fg")!
print(subStr[subStr.startIndex..<r1.lowerBound]) //截取到fg之前,不包含fg:abcde
print(subStr[subStr.startIndex..<r1.upperBound]) //截取到fg,包含fg:abcdefg

字符串替换

1
2
var re1 = "comgaga.com"
re1 = re1.replacingOccurrences(of: "ga", with: "") //com.com

字符串插入

1
2
3
4
5
6
7
var insert1 = "ABCD"
//单个字符
insert1.insert("E", at:insert1.index(insert1.startIndex, offsetBy: 3))
print(insert1) //ABCED
//多个字符
insert1.insert(contentsOf: "9990", at: insert1.index(before: insert1.endIndex))
print(insert1) //ABCE9990D

字符串删除某段内容

1
2
3
4
5
var lessStr = "ABCDEFG"
let star = lessStr.index(lessStr.startIndex, offsetBy: 3)
let end = lessStr.index(lessStr.endIndex, offsetBy: -2)
lessStr.removeSubrange(star...end)
print(lessStr) //ABCG

字符串全部小写或大写

1
2
3
let up1 = "QeRrDaDASdasdAa"
print(up1.lowercased()) //qerrdadasdasdaa
print(up1.uppercased()) //QERRDADASDASDAA

The end