不推荐使用Swift 4:substring(with :)':请使用字符串切片下标

时间:2017-10-14 21:41:51

标签: swift swift4

我正在使用html的解码功能。但是我收到了这个警告。我该如何摆脱?

func decode(_ entity : String) -> Character? {

    if entity.hasPrefix("&#x") || entity.hasPrefix("&#X"){
        return decodeNumeric(entity.substring(with: entity.index(entity.startIndex, offsetBy: 3) ..< entity.index(entity.endIndex, offsetBy: -1)), base: 16)
    } else if entity.hasPrefix("&#") {
        return decodeNumeric(entity.substring(with: entity.index(entity.startIndex, offsetBy: 2) ..< entity.index(entity.endIndex, offsetBy: -1)), base: 10)
    } else {
        return characterEntities[entity]
    }
}

谢谢。

1 个答案:

答案 0 :(得分:21)

someString.substring(with: someRange)只需someString[someRange]

所以改变:

entity.substring(with: entity.index(entity.startIndex, offsetBy: 3) ..< entity.index(entity.endIndex, offsetBy: -1))

entity[entity.index(entity.startIndex, offsetBy: 3) ..< entity.index(entity.endIndex, offsetBy: -1)]

换句话说,将.substring(with:更改为[并将结束)更改为]

结果是Substring,而不是String。因此,您可能需要将结果包装在String( )中以从子字符串结果中获取String