【问题标题】:Trim String before specific character?在特定字符之前修剪字符串?
【发布时间】:2019-05-16 06:34:49
【问题描述】:

我有一个字符串 (asderwt.qwertyu.zxcvbbnnhg),我想将其更改为 .qwertyu.zxcvbbnnhg

我已尝试使用以下代码执行此操作:

Var str = "asderwt.qwertyu.zxcvbbnnhg"
if let dotRange = str.range(of: ".") {
str.removeSubrange(dotRange.lowerBound..<str.startIndex)
print("AAAAAAAAAA: \(str)")

 }

【问题讨论】:

  • 你在这里决定修剪哪里的算法是什么?到目前为止你有什么尝试?显示您的代码。

标签: ios swift


【解决方案1】:

获取点的第一个索引并获取该索引之后的子字符串

let str = "asderwt.qwertyu.zxcvbbnnhg"
if let index = str.firstIndex(where: { $0 == "." }) {
    print(str[index...])//.qwertyu.zxcvbbnnhg
}

【讨论】:

    【解决方案2】:

    你在正确的轨道上,但在这里

    str.removeSubrange(dotRange.lowerBound..<str.startIndex)
    

    范围边界的顺序错误。应该是

    var str = "asderwt.qwertyu.zxcvbbnnhg"
    if let dotRange = str.range(of: ".") {
        str.removeSubrange(str.startIndex..<dotRange.lowerBound) // <-- HERE
        print("Result: \(str)") // Result: .qwertyu.zxcvbbnnhg
    }
    

    您也可以使用“部分范围”

    if let dotRange = str.range(of: ".") {
        str.removeSubrange(..<dotRange.lowerBound)
        print("Result: \(str)") // Result: .qwertyu.zxcvbbnnhg
    }
    

    或者用firstIndex(of:)代替range(of:)

    if let dotIndex = str.firstIndex(of: ".") {
        str.removeSubrange(..<dotIndex)
        print("Result: \(str)") // Result: .qwertyu.zxcvbbnnhg
    }
    

    【讨论】:

    • 我们可以使用stride 做到这一点吗?
    • @PrashantTukadiya:你什么意思?我还没有看到 stride 对这项任务有多大用处。
    • 我已经看到了这个答案,所以stackoverflow.com/a/38980231/4601900 我想我们也可以在这里使用它。可能我们不能在这里使用步幅
    • @PrashantTukadiya:这里给出了子字符串的长度,结果是子字符串的array。在这里,我们要拆分(第一次出现)某个字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2015-07-25
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多