swift - Swift 5.1 - 是否有一种干净的方法来处理子字符串/模式匹配的位置
问题描述
我对 Swift 非常非常陌生,并且诚然在它的一些结构上苦苦挣扎。我必须使用文本文件并进行许多操作 - 这是一个示例来说明这一点:
假设我有这样的文字(多行)
Mary had a little lamb
@name: a name
@summary: a paragraph of text
{{something}}
a whole bunch of multi-line text
x----------------x
我希望能够做一些简单的事情,比如找到@name 的位置,然后拆分它以获取名称等等。我已经在 javascript 中完成了这项工作,使用 substr 和正则表达式匹配非常简单。
在 swift 中,这应该是快速和简单的,而不是什么,我发现这非常令人困惑。
有人可以帮助一个人怎么做
查找子字符串的开始位置
提取从子字符串结尾到文本结尾之间的所有文本
对不起,如果这是微不足道的 - 但苹果文档感觉非常复杂,而且很多例子都是多年前的。我似乎也找不到正则表达式的简单应用。
解决方案
你可以用range()
and做到这一点distance()
:
let str = "Example string"
let range = str.range(of: "amp")!
print(str.distance(from: str.startIndex, to: range.lowerBound)) // 2
let lastStr = str[range.upperBound...]
print(lastStr) // "le string"
推荐阅读
- c# - 使用“键”作为规则元素标签
- android - 如果传感器在启动前连接,FTDI 只能打开连接
- powerbi - 在 CALCULATETABLE 期间使用来自另一个表 (DAX) 的值进行过滤
- php - 仅当没有与之关联的参与者时才删除注册类型
- javascript - Vuejs 和 Firebase:无法访问 onSnapshot() 中的“this”
- python - Python while 循环未按预期执行
- android - 将按钮单击重定向到不可见元素(Google 登录)
- vba - 将系列趋势线方程获取到形状文本框
- python - pip install gitpython,pip search 返回一个堆栈跟踪。我认为 pip 需要更新,但出现 ssl 错误
- sqlite - Flutter Text("${sqlite_tbl[0]['body']") 抛出 NoSuchMethodError