目录
重复字符串:init(repeating repeatedValue: String, count: Int)
isEpety 判断是否为空字符串。(“”.isEpety为ture)
1、components(separatedBy:_) 方法
初始化
var str = "Hello, playground !"
var strB = String("")
//明确 指定类型初始化
// String string = "Say Hi !" //错误
// string:String = "Say Hi !" //错误
let string:String = "Say Hi !" //
var stringB:String = "Say Hello !"//
初始化方法
重复字符串:init(repeating repeatedValue: String, count: Int)
示例:
let testStr = String(repeating: "哈", count: 5)
print(testStr) //哈哈哈哈哈
方法
截取字符串
截取前 N 位
var str = "Hello, playground"
//截取前 5 位
let subStr = str.prefix(5)
print(subStr) //Hello
截取后 N 位
//截取后5 位
let subBackStr = str.suffix(5)
print(subBackStr) //round
取第N位的 字符Character
let startIndex = str.index(str.startIndex, offsetBy: 4)//开始位置的后4位截取一位
print(str[startIndex])//o
取尾部的一个字符Character
let lastIndex = str.index(str.endIndex, offsetBy: -1) //从末尾的前1位截取一位
print(str[lastIndex]) //d
或
let lastBeforeIndex = str.index(before: str.endIndex)// string.index类型
let lastChar = str[lastBeforeIndex] //d
从开始位置 取到 第N位
let subEndIndex = str.index(str.startIndex, offsetBy: 5)
let subString = str[..<subEndIndex] // 从开始 取到 第5位
print(subString) //Hello
从第N位 到 第N+ 位 (包含 N + )
// 从第7位 到 第10位
let subSevenIndex = str.index(str.startIndex, offsetBy: 7) //7
let subElevenIndex = str.index(str.startIndex, offsetBy: 7+3) //10
let subFourString = str[subSevenIndex...subElevenIndex] // 从开始 到 第5位
print(subFourString) //play
从第N位 到 第N+ 位 (不包含 N + )
// 从第7位 到 第11位
let subSevenIndex = str.index(str.startIndex, offsetBy: 7) //7
let subElevenIndex = str.index(str.startIndex, offsetBy: 7+4) //10
let subFourString = str[subSevenIndex..<subElevenIndex] // 从开始 到 第5位
print(subFourString) //play
从第N位,取到最后一位
//从第5位,到最后一位
let subStartIndex2 = str.index(str.startIndex, offsetBy: 5)
let subEndIndex2 = str.endIndex
let subString2 = str[subStartIndex2..<subEndIndex2]
print(subString2) // , playground
访问最后一位元素
let lastBeforeIndex = str.index(before: str.endIndex)// string.index类型
//let lastBeforeIndex = str.index(str.endIndex, offsetBy: -1)
let lastChar = str[lastBeforeIndex] //!
let fristChart = str[str.startIndex] //H 第一个元素
//let endChart:Character? = str[str.endIndex] //超出范围1
//let lastCharter = str[str.index(after: str.startIndex)] //e //第二个元素
移除元素
let removeFriset = str.removeFirst() //H
let removeLast = str.removeLast() // !
print ("removeFriset: \(removeFriset)\n .removeLast:\(removeLast)")
//removeFriset: H .removeLast:!
// 同上
var stringB = "Say Hello !here?"
stringB.remove(at: stringB.startIndex)
print(stringB) //ay Hello !here?
stringB.remove(at: stringB.index(before: stringB.endIndex))
print(stringB) //ay Hello !here
获取到指定位置
let range = str.range(of: "pl")
print(str[str.startIndex..<range!.lowerBound]) // Hello,
print(str[str.startIndex..<range!.upperBound]) // Hello,pl
字符串翻转
let string:String = "Hello, world !"
print(String(string.reversed()))
输出 ! dlrow ,olleH
isEpety 判断是否为空字符串。(“”.isEpety为ture)
if str.isEmpty {
print("str is empty!")
} else if strB.isEmpty {
print("str is not empyty! strB is empty !")
}
+ 字符串链接
var strA = "Hello !"
strA += " Is me !"
print(strA) // "Hello ! Is me !"
//字符串b常量
let constStr = "Good !"
// constStr += " boy" //不可,报错 note: change 'let' to 'var' to make it mutable
\() 字符串链接
1、\() 相当与stringFormat 2、+ 相当与 stringbyappending
let a:Float = 20
let b:Float = 2.312
var c:Float = 100
let ABCString = "\(a) 乘以 \(b) 加\(c) 等于\(a*b+c)"//当a为Int类型时 swift是不允许与Float运算的,精度会丢失。y所以都改为floatn类型运算
print(ABCString) //20.0 乘以 2.312 加100.0 等于146.24
Float 通过字符串保留两位小数
let a:Float = 20
let b:Float = 2.312
var c:Float = 100
let ABCString = "\(a) 乘以 \(b) 加\(c) 等于\(a*b+c)"//当a为Int类型时 swift是不允许与Float运算的,精度会丢失。y所以都改为floatn类型运算
print(ABCString) //20.0 乘以 2.312 加100.0 等于146.24
== 字符串比较
print("\(strA == constStr)") //false
print("\(strA == "Hello ! ")") //false
print("\(strA == "Hello ! Is me !")") //true
< 比较大小
print("a" < "A") //false 比较大小 (ascll a:97 A:65
contains 是否包含
print(str.contains("ll")) //是否包含string
// true
hasPrefix 以 xxx 为开头
print(str.hasPrefix("Hello")) //以 xxx 为开头
//true
hasSuffix 以 xxx 为结尾头
print(str.hasSuffix("d")) //以 xxx 为结尾头
//false
字符串分割为 数组
1、components(separatedBy:_) 方法
var str = "Hello, playground !Hello, world !"
let helloArray = str.components(separatedBy: " ")
print("空格拆分后为\(helloArray)")
//空格拆分后为["Hello,", "playground", "!Hello,", "world", "!"]
let componentArray = str.components(separatedBy: "l")
print("componentArray:\(componentArray)")
//componentArray:["He", "", "o, p", "ayground !He", "", "o, wor", "d !"]
2、split(separator: _)方法
let slipArray = str.split(separator: "l")
print("splitArray:\(slipArray)")
//splitArray:["He", "o, p", "ayground !He", "o, wor", "d !"]
components 分割时,有两个相同的分割符号时会分割出来 “”(空字符串来表示)
字符串替换
let replaceString = str.replacingOccurrences(of: "Hello", with: "Hi")
print("str is :\(str) \n replaceString : \(replaceString)")
// str is :Hello, playground !Hello, world !
replaceString : Hi, playground !Hi, world !
字符转Ascll码
let aCh:String = "a"
for code in aCh.unicodeScalars {
let num = code.value
print(num) // 97
}
将整数转换为字符
var num = 67
var ch:Character = Character(UnicodeScalar(num)!)
print(ch) // "C"
遍历
字符串遍历 for in
for char in constStr {
print(char)
}
输出
G
o
o
d
!
字符串遍历 enumerated => (index + char)
for (index, item) in constStr.enumerated() {
print("index : \(index) ====>>> char :\(item)")
}
index : 0 ====>>> char :G
index : 1 ====>>> char :o
index : 2 ====>>> char :o
index : 3 ====>>> char :d
index : 4 ====>>> char :
index : 5 ====>>> char :!
字符串遍历 (index)基于索引的正序遍历
var inde = 0 //此处用Int i = 0 不可以。被解读为let
for inde in inde..<constStr.count {
let ch = constStr[constStr.index(constStr.startIndex, offsetBy:inde)];
print("位置:\(inde) === 值:\(ch)")
// inde += 1 //不需要手动+
}
输出:
位置:0 === 值:G
位置:1 === 值:o
位置:2 === 值:o
位置:3 === 值:d
位置:4 === 值:
位置:5 === 值:!
字符串遍历 逆序b
for ch in constStr.reversed() {
print("字符串逆序遍历 \(ch)")
}
字符串逆序遍历 !
字符串逆序遍历
字符串逆序遍历 d
字符串逆序遍历 o
字符串逆序遍历 o
字符串逆序遍历 G