2个字符串相等 swift_Swift字符串操作

本文详细介绍了Swift中字符串的声明、多行字符串、插值、常见操作如判断空、取出字符、插入删除字符、拼接、长度判断、子字符串获取及分割。Swift的字符串操作虽然相对复杂,但提供了丰富的功能,支持更安全的编程实践。
摘要由CSDN通过智能技术生成

声明

let emptyString = ""
let str = "abc"
let str1: String = "abc"
// str2赋值后才可以使用 并且不能改变
let str2: String?
复制代码
声明多行字符串
let numbers = let numbers = """
1
2
3
4
5
"""
print("numbers === \(numbers)")
复制代码

输出结果如下所示:

cee1f9c7c22a506d8c89384a11ac126f.png
多行字符串输出结果

字符串插值

使用\()来进行插值,与Objective-CstringWithFormat方法类似,其实就是使用占位符格式化输出.

let str = "6 times 7 is \(6 * 7)."
print(str)
复制代码

输出结果:

24d2cf06d7daf37b5f3f31d63e76124e.png
输出插值字符串

插值使用起来确实比OC的更加方便灵活

let str: String = "abc"
print("str is \(str)")
复制代码
Raw String

swift的转义写法,可以在字符串中输出特殊字符

print(#"6 times 7 is \(6 * 7)."#)
复制代码

输出结果如下所示:

27fc36412cfbe0706bc018cd66285fab.png
Raw String输出

这个时候如果想要使插值生效的话,可以在反斜杠后面添加与首尾同等数量的#

print(#"6 times 7 is \#(6 * 7)."#)
复制代码

输出结果:

f4df8ee660a79e525e057b2528feea4a.png
Raw String使插值生效

字符串常用操作

判空
let emptyString = ""
if emptyString.isEmpty {
print("emptyString is empty")
}
复制代码
取出字符串中某个字符
  1. 取出某个个字符

    let welcome = "Hello, world!"
    // 取出第一个字符
    welcome[welcome.startIndex]
    // 取出最后一个字符
    welcome[welcome.index(before: welcome.endIndex)]
    // 第二个字符
    welcome[welcome.index(after: welcome.startIndex)]
    /// 取出第一个字符值后面第二个字符
    welcome[welcome.index(welcome.startIndex, offsetBy: 2)]
    复制代码
  1. 插入字符

    var str = "abc"
    str.insert("d", at: str.endIndex)
    /// 结果 str = abcd
    复制代码
  2. 插入字符串

    str.insert(contentsOf: "efg", at: str.endIndex)
    /// 结果 str = abcdefg
    复制代码
  3. 移除字符

    // 移除首字符
    str.removeFirst()
    // 移除最后一个字符
    str.removeLast()
    str.remove(at: str.index(before: str.endIndex))
    print(str)
    /// str = adcdef
    复制代码
  4. 移除字符串

    var string = "abcdef"
    let range = string.index(str.endIndex, offsetBy: -2)..string.removeSubrange(range)
    /// str = abcd

    // 移除所有
    string.removeAll()
    /// str = ""
    复制代码
  5. 字符串长度

var str1 = "123"
str1.count
复制代码
  1. 字符串判断

    let string1 = "123456"
    let string2 = "123"
    if string1 == string2 {
    print("string1与string2相等")
    }
    // 前缀相等性
    string1.hasPrefix(string2)
    // 后缀相等性
    string1.hasSuffix(string2)
    复制代码
  2. 获取子字符串

    let title = "Hello, world!"
    // 截取前缀
    title.prefix(5)
    // 截取后缀
    title.suffix(6)
    复制代码
  3. 分割字符串

    let nameStr = "John,Andy,Nancy"
    let names = nameStr.split(separator: ",")
    复制代码
  4. 字符串拼接

    var starStr = "abc"
    let endStr = "efg"
    starStr.append(endStr)
    复制代码

注意:

  • 使用下标或者类似prefix(_:)的方法得到的字符串是Substring类型

  • Substring拥有String的大部分方法, Substring可以转为String, (Substring是为了内存考虑,在更改或者使用String初始化Substring之前, Substring都指向原来的内存)

  • String和Substring都遵循StringProtocol协议, 在日常工作中, 需要一些定义字符串的操作函数,参数使用StringProtocol

拓展 从上面我们的一系列操作中,我们可以看出Swift的字符串不支持下标的操作,全部采用String.index进行操作,使用起来确实更加复杂,why?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值