【问题标题】:How to remove first word from a sentence in swift如何快速删除句子中的第一个单词
【发布时间】:2021-01-28 03:23:15
【问题描述】:

我知道如何像这样快速删除单词中的第一个字符:

var data = "CITY Singapore"
data.removeFirst()
print(data)//ITY Singapore

我想要的是删除第一个单词和空格,所以结果是“新加坡”。 如何快速删除第一个单词和前导空格?

【问题讨论】:

  • 字符串可以以空格开头吗?单词之间有多个空格的字符串是有效字符串吗?如果是,它们应该被标准化吗?会不会是单词被其他字符隔开?

标签: ios swift string xcode


【解决方案1】:

你可以试试

let data = "CITY Singapore"
let res = data.components(separatedBy: " ").dropFirst().joined(separator: " ") 
print(res)

或者

let res = data[data.range(of: " ")!.upperBound...] // may crash for no " " inside the string

【讨论】:

  • 如果字符串开头包含一个空格,这将导致“CITY Singapore”
  • @LeoDabus op 说的一句话我认为任何句子都不应该以空格开头?
  • 这完全取决于字符串的来源。无论如何,这只是对使用此方法时的行为的评论。
【解决方案2】:

或者你也可以这样做

let strData = "CITY Singapore"

if let data = strData.components(separatedBy: " ").dropFirst().first {
    // do with data
}
else {
    // fallback
}

【讨论】:

    【解决方案3】:

    这是一个正则表达式解决方案,好处是修改字符串到位。

    模式从字符串的开头搜索到第一个空格字符

    var data = "CITY Singapore"
    if let range = data.range(of: "^\\S+\\s", options: .regularExpression) {
        data.removeSubrange(range)
    }
    

    【讨论】:

      【解决方案4】:

      您可以通过byWords 选项使用String 的enumerateSubstrings in range 方法(基础)并删除第一个封闭范围。您还需要在第一次删除范围后停止枚举:

      var string = "CITY Singapore"
      string.enumerateSubstrings(in: string.startIndex..., options: .byWords) { (_, _, enclosingRange, stop) in
          string.removeSubrange(enclosingRange)
          stop = true
      }
      string  // "Singapore"
      

      【讨论】:

        猜你喜欢
        • 2020-01-16
        • 1970-01-01
        • 1970-01-01
        • 2021-03-18
        • 2021-10-31
        • 2011-07-20
        • 2021-04-30
        • 2021-05-16
        • 2011-01-29
        相关资源
        最近更新 更多