Swift里的字符串Sting

这篇博客详细介绍了Swift中字符串的各种操作,包括初始化、截取、遍历、比较、转换等,涵盖了如`init(repeating:)`、`contains`、`hasPrefix`、`hasSuffix`、`components(separatedBy:)`等重要方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

初始化

初始化方法

重复字符串:init(repeating repeatedValue: String, count: Int)

方法

截取字符串

截取前 N 位

截取后 N 位

取第N位的 字符Character

取尾部的一个字符Character

从开始位置 取到 第N位

从第N位 到 第N+ 位 (包含 N + )

从第N位 到 第N+ 位 (不包含 N + )

从第N位,取到最后一位

访问最后一位元素

移除元素

获取到指定位置

字符串翻转

isEpety 判断是否为空字符串。(“”.isEpety为ture)

+ 字符串链接 

\() 字符串链接 

Float 通过字符串保留两位小数

== 字符串比较

< 比较大小

contains 是否包含

hasPrefix  以 xxx 为开头

hasSuffix 以 xxx 为结尾头

字符串分割为 数组

1、components(separatedBy:_) 方法

2、split(separator: _)方法

字符串替换

字符转Ascll码

将整数转换为字符

遍历

字符串遍历 for in 

字符串遍历 (index)基于索引的正序遍历

字符串遍历 逆序b


初始化

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

代码相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值