Swift 字符串的基本使用和常用方法

本文介绍了Swift中创建空字符串、多行字面量、特殊字符转译、扩展字符串分隔符、常用字符串操作等内容,适合学习者理解Swift字符串处理的细节。

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

一.空字符串的创建:
  • 字面量创建:
var str: String = ""
  • 初始化构造器创建:
var str1 = String()
二:多行字面量
  • 多行字面量是用三个双引号引起来的一系列字符。
  • 多行字符串字面量把所以行包括在引号内,开始和结束默认不会有换行符。
  • 当你的代码中在多行字符串字面量里包含了换行,那个换行符同样会成为字符串里的值。如果你想要使用换行符来让你的代码易读,却不想让换行符成为字符串的值,那就在那些行的末尾使用反斜杠( \ )在这里插入图片描述
    在行的末尾使用反斜杠后
    在这里插入图片描述
  • 要让多行字符串字面量在起始或者结束时换行,就在第一或者最后一行写一个空行。
  • 多行字符串可以缩进以匹配周围的代码,双引号( " " " )前的空格会告诉Swift其他行前应该有多少空白是需要忽略的。
  • 如果你在某行的空格超过了结束的双引号( " " " ),那么这些空格会被包含。
    在这里插入图片描述
    打印后的数据:
    在这里插入图片描述
三、特殊字符转译:

1、此处仅列举一些常用的特殊字符

let wiseWords = "\"he victims were not referred to by name\".-English"
print(wiseWords)
let dollarSign = "\u{24}"
print(dollarSign)

let blackHeart = "\u{2665}"
let pinkHeart = "\u{1F496}"

可见右侧显示的特殊字符

四、扩展字符串分隔符(raw string)
在这里插入let str0 = "line 1 \nline 2"  //这样直接换行
print(str0)
let str = #"line 1 \nline 2"#  //这样换行符还是会显示出来
print(str)
let str2 = #"line 1 \#nline 2"#  //要想打印时不显示换行符又能达到换行的目的,需要在"\"后面再加上一个"#"
print(str2)
let str3 = ##"line 1 \##nline 2"##  //换行符中的#数量要和前后的#数量一致,否则达不到换行的目的
print(str3)
代码片
五、字符串的常见用法:
1、字符串的拼接:字符串可以直接使用“+”进行拼接
let str = "hello"  //let修饰的常量,不可更改
var str2 = "hello"
//var修饰变量可以直接使用"+"进行字符串的拼接
str2 += " world"
print(str)
print(str2)
2、字符串是值类型,赋值的时候直接将字符串的值拿过去
let str = "hello"
var str2 = str
print(str == str2)  //打印的是true,说明字符串只是简单的赋值.对标 OC 中的 isEqualToString:方法,而不是地址间的比较。    swift中不是非0即真,只有true和false

str2.append(" how are you!")
print(str2)
3、字符串的遍历
let str = "hello"
for c in str {
    print(c)
}
4、字符串插值(使用""来表示字符串插值),可以输出该变量的值。类似于 NSString 的 stringWithFormat 方法,但是更加简便,更强大
print("6 * 7 = \(6 * 7)")
//字符串插值也可以使用在row string(扩展字符串分隔符)中
print(#"7 * 8 = \(7 * 8)"#)   //打印结果: 7 * 8 = \(7 * 8),需要匹配同等数量的扩展字符串分隔符才行
print(#"7 * 8 = \#(7 * 8)"#)  //打印结果: 7 * 8 = 56
5、获取字符串的下标
let str = "hello world!"
//获取字符串的首个下标字符
print(str[str.startIndex])  //打印结果: h
//获取字符串最后一个下标的字符
print(str[str.index(before: str.endIndex)])  //打印结果: !
//获取第一个下标后一个下标的字符
print(str[str.index(after: str.startIndex)])  //打印结果: e

//获取指定范围内的字符(从下标为0的字符开始,获取到下标为10的字符)
let index = str.index(str.startIndex, offsetBy: 10)
print(str[index])  //打印结果: d
6、字符串的插入
var str = "hello"
//插入一个字符到指定的字符串索引中
str.insert("!", at: str.endIndex)
print(str)  //打印结果: hello!
//插入另一个字符串的内容到指定的字符串索引中
str.insert(contentsOf: " world!", at: str.endIndex)
print(str)  //打印结果: hello! world!

7、字符串的删除操作
var str = "hello world!"
//str.insert(contentsOf: "你好呀!", at: str.endIndex)
删除字符串的首个下标的字符
str.removeFirst()
str.remove(at: str.startIndex)
删除最后一个下标的字符
//str.removeLast()
//str.remove(at: str.index(before: str.endIndex))
//删除一段特定范围的字符
let range = str.index(str.endIndex, offsetBy: -6)..<str.endIndex
str.removeSubrange(range)
//删除所有字符
//str.removeAll()
print(str)   //打印结果: llo
8、字符串string的子字符串是subString类型,subString拥有大部分string的方法,subString可以转换成string类型
let str = "hello world"
let str2 = str[str.firstIndex(of: "e") ?? str.endIndex]  //三目运算符 ?? : 如果 str.firstIndex(of: "e") 不为 nil, 那么就取它解包后的值
print(str2)  //打印结果: e

let index = str.firstIndex(of: "e") ?? str.endIndex
let str3 = str[..<index]
print(str3)  //打印结果: h
let index2 = str.firstIndex(of: ",") ?? str.endIndex
let beginning = str[..<index2]
print(beginning)  //打印结果: hello world
//将subString转换成了string类型
let newString = String(beginning)
9、判断两个字符串内容是否一致,使用 == 就可以了,只是字符串值的比较
let str = "hello"
let str2 = "hello world"
print(str == str2)
10、判断字符串是否以…开头,使用hasPrefix
let str = "hello"
let str2 = "hello world"
print(str.hasPrefix("hello"))
//判断字符串是否以...结尾,使用hasSuffix
print(str.hasSuffix("hello"))
print(str2.hasSuffix("world"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值