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

我有以下代码在
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对范围的实现方式以及一些String功能进行了一些更改.我似乎无法找到解决问题的简洁解决方案并将此语句转换为正确的Swift 3语法.该语句的Swift 3语法是什么?

最佳答案 在Swift 3中,indices属性已成为Index的集合,而不再是一种Range.如果你想要一个表示整个String的索引范围,你需要写这样的东西:

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