inout String在Swift 3范围内不能转换为String

时间:2016-09-28 10:42:54

标签: swift swift3

我有以下代码在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语法是什么?

1 个答案:

答案 0 :(得分:2)

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

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