如何修复不推荐使用的子字符串(使用:)

How to fix deprecated substring(with: )

我正在完成一本书的练习,作者有以下代码。

func getMatchingString(str: String) -> String? {
    if let newMatch = str.range(of:regExFindMatchString,                          
                 options:.regularExpression) {
        return str.substring(with: newMatch)
    } else {
        return nil
    }
}

str.substring(with: newMatch) 行显示 'substring(with:) is deprecated use String slicing subscript.'

我试图弄清楚用什么来解决这个问题,但我尝试过的一切都表明我对这个问题的理解还不够深入,无法解决它。我知道 newMatch 是一个范围对象,只是不知道如何有效地使用它。

非常感谢任何帮助..

鲍勃

只需将下标与您从 if let

获得的范围一起使用
if let newMatchRange = str.range(of:regExFindMatchString,   options:.regularExpression) {
    return String(str[newMatchRange])
} else {
    return nil
}

您需要将其转换为字符串,因为该方法实际上是 returns 子字符串类型,而不是字符串。