首页 > 解决方案 > 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 中,这应该是快速和简单的,而不是什么,我发现这非常令人困惑。

有人可以帮助一个人怎么做

  1. 查找子字符串的开始位置

  2. 提取从子字符串结尾到文本结尾之间的所有文本

对不起,如果这是微不足道的 - 但苹果文档感觉非常复杂,而且很多例子都是多年前的。我似乎也找不到正则表达式的简单应用。

标签: swiftstringsubstringswift5

解决方案


你可以用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"

推荐阅读