【问题标题】:Remove Last Two Characters in a String删除字符串中的最后两个字符
【发布时间】:2017-02-22 23:49:46
【问题描述】:

有没有一种快速的方法可以在 Swift 中删除字符串中的最后两个字符?我看到有一种简单的方法可以删除最后一个字符,如明确指出的here。你知道如何删除最后两个字符吗?谢谢!

【问题讨论】:

标签: ios swift string swift3


【解决方案1】:

更新:Xcode 9 • Swift 4 或更高版本

String 现在符合 RangeReplaceableCollection,因此您可以直接在 String 中使用收集方法 dropLast,因此不再需要扩展。唯一的区别是它返回一个子字符串。如果你需要一个字符串,你需要从中初始化一个新的:

let string = "0123456789"
let substring1 = string.dropLast(2)         // "01234567"
let substring2 = substring1.dropLast()      // "0123456"
let result = String(substring2.dropLast())  // "012345"

我们还可以扩展 LosslessStringConvertible 以添加我认为提高可读性的尾随语法:

extension LosslessStringConvertible {
    var string: String { .init(self) }
}

用法:

let result = substring.dropLast().string

【讨论】:

  • 我就是喜欢 swift。
  • 请注意,String.dropLast() 返回 Substring,因此您可能需要根据使用方式将其转换为字符串。
  • @Uncommon 如果您阅读了整个答案,您会发现帖子中已经说明了
【解决方案2】:
var name: String = "Dolphin"
let endIndex = name.index(name.endIndex, offsetBy: -2)
let truncated = name.substring(to: endIndex)
print(name)      // "Dolphin"
print(truncated) // "Dolph"

【讨论】:

  • 你只是从OP给出的链接复制粘贴
  • 原链接去掉最后一个字符,不是最后两个
  • dropLast(..) 方法shown in @LeoDabus answer 相比,此答案中的方法将为少于两个字符(只有一个字符为空)的字符串产生运行时异常。此外,dropLast 方法是 Swift 原生的,.substring 是通过 Foundation 从 NSString 桥接的(不完全是 Swift 原生的)。
  • 最好的问题是,如何选择前 N 个字符,否则你需要测试你有足够的东西保持非零
  • 谢谢!它节省了我的时间。
【解决方案3】:

迅速 4:

let str = "Hello, playground"
let newSTR1 = str.dropLast(3)
print(newSTR1) 

output: "Hello, playgro"

//---------------//

let str = "Hello, playground"
let newSTR2 = str.dropFirst(2)
print(newSTR2)

output: "llo, playground"

【讨论】:

    【解决方案4】:

    使用removeSubrange(Range<String.Index>),就像:

    var str = "Hello, playground"
    str.removeSubrange(Range(uncheckedBounds: (lower: str.index(str.endIndex, offsetBy: -2), upper: str.endIndex)))
    

    如果字符串长度少于 2 个字符,这将崩溃。这对你有要求吗?

    【讨论】:

      【解决方案5】:

      最好使用removeLast()

      var myString = "Hello world"
      myString.removeLast(2)
      
      output : "Hello wor"
      

      【讨论】:

      • 如果字符串短于 2,这将失败。根据文档:“尝试删除比集合中存在的更多的元素会触发运行时错误。”
      猜你喜欢
      • 2016-01-21
      • 2019-10-25
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2017-08-19
      相关资源
      最近更新 更多