如何修复不推荐使用的子字符串(带有:)
Posted
技术标签:
【中文标题】如何修复不推荐使用的子字符串(带有:)【英文标题】:How to fix deprecated substring(with: ) 【发布时间】:2021-01-25 16:13:40 【问题描述】:我正在做一个书本练习,作者有以下代码。
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 是一个范围对象,只是不知道如何有效地使用它。
非常感谢任何帮助..
鲍勃
【问题讨论】:
return str.substring(with: newMatch)
=> return String(str[newMatch])
?
【参考方案1】:
只需对从if let
获得的范围使用下标
if let newMatchRange = str.range(of:regExFindMatchString, options:.regularExpression)
return String(str[newMatchRange])
else
return nil
您需要将其转换为字符串,因为该方法实际上返回的是子字符串类型,而不是字符串。
【讨论】:
谢谢,我用各种语言编写代码已有 40 年了,但 Swift 的力量让我感到困惑。我比这更直观地学会了 Java……但我喜欢这种语言……以上是关于如何修复不推荐使用的子字符串(带有:)的主要内容,如果未能解决你的问题,请参考以下文章
String的replace方法怎么转换带有特殊字符的子字符串?