【问题标题】:removeSubrange produces '()', not the expected contextual result type 'String'removeSubrange 产生“()”,而不是预期的上下文结果类型“字符串”
【发布时间】:2017-08-25 17:00:09
【问题描述】:
static func trimBefore(string: inout String, char: Character) -> String {

    var newString = ""

    if let charRange = string.range(of: String(char)) {
        newString = string.removeSubrange(string.startIndex..<charRange.upperBound)
    }
    return newString
}

static func trimAfter(string: inout String, char: Character) -> String {

    var newString = ""

    if let charRange = string.range(of: String(char)) {
        newString = string.removeSubrange(charRange.lowerBound..<string.endIndex)
    }
    return newString
}

我收到标题中的错误。为什么会这样?

【问题讨论】:

  • removeSubrange 不返回任何内容,它会改变您调用它的字符串

标签: swift


【解决方案1】:

当我尝试 print(extInfo.trimBefore(char: ".") 时问题就开始了。这返回了 ()。

当我把它改成:

extInfo.trimAfter(char: ".")
print(extInfo)

它按预期工作。

mutating func trimBefore(char: Character) {

    if let charRange = self.range(of: String(char)) {
        self.removeSubrange(self.startIndex..<charRange.upperBound)
    }
}

mutating func trimAfter(char: Character) {

    if let charRange = self.range(of: String(char)) {
        self.removeSubrange(charRange.lowerBound..<self.endIndex)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多