在特定字符前修剪字符串?

时间:2019-05-16 06:34:50

标签: ios swift

我有一个字符串(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)")

 }

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您在正确的轨道上,但是在这里

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
}