【问题标题】:inout String is not convertible to String in Swift 3 rangeinout 字符串不能转换为 Swift 3 范围内的字符串
【发布时间】:2016-09-28 10:42:53
【问题描述】:

我有以下代码在 Swift 2 中运行良好:

let myModifiedString = myOriginalString.replacingOccurrences(of: "#(?:\\S+)\\s?",
            with: "",
            options: .regularExpression,
            range: Range(myOriginalString.characters.indices))

但是,我正忙着将我的代码升级到 Swift 3,我收到错误消息“inout String”不可转换为“String”类型。

错误发生在 myOriginalString.characters.indices 上。

我看到 Swift 3 对范围的实现方式以及一些字符串功能进行了一些更改。我似乎无法找到一个简洁的解决方案来解决问题并将此语句转换为正确的 Swift 3 语法。该语句的正确 Swift 3 语法是什么?

【问题讨论】:

标签: swift swift3


【解决方案1】:

在 Swift 3 中,indices 属性已成为索引集合,而不再是范围。如果你想要一个代表整个字符串的索引范围,你需要这样写:

let myModifiedString = myOriginalString.replacingOccurrences(of: "#(?:\\S+)\\s?",
                                                             with: "",
                                                             options: .regularExpression,
                                                             range: myOriginalString.startIndex..<myOriginalString.endIndex)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多