swift - 根据符号 $$ 和 && 拆分字符串以访问 Swift 中的数据
问题描述
我有一个包含 Id 和演示名称的字符串。字符串格式为 $$Id&&presentationName
$$5955&&演示名称1 [克隆]$$7460&&演示名称2 $$7473&&演示名称3$$7626&&演示名称4 [克隆]$$7460&&演示名称5$$7123&&演示名称6
我想根据符号 $$ 和 && 将字符串拆分为两个数组,其中包含 ID 和演示名称。我是iOS新手,请帮忙。
预期输出:arrayID = [5955, 7460, 7473, 7626, 7460, 7123]
arrayPresentationNames = ["Presentation Name1 [CLONE]", "Presentation Name2", "Presentation Name3", "Presentation Name5", "Presentation Name5", "Presentation Name6"]
我已经尝试过如下但没有成功。
let separators = NSCharacterSet(charactersInString: "&&")
var fullStr: String = "$$3232&&presentation name";
var words = fullStr.componentsSeparatedByCharactersInSet(separators)
解决方案
这是一种使用正则表达式将字符串解析为自定义结构的解决方案
struct Presentation {
let id : Int
let name : String
}
let string = "$$5955&&Presentation Name1 [CLONE]$$7460&&Presentation Name2 $$7473&&Presentation Name3$$7626&&Presentation Name4 [CLONE]$$7460&&Presentation Name5$$7123&&Presentation Name6"
let regex = try! NSRegularExpression(pattern: "\\$\\$(\\d+)&&([^\\$]+)")
let matches = regex.matches(in: string, range: NSRange(string.startIndex..., in: string))
let presentations = matches.map { match -> Presentation in
let numberRange = Range(match.range(at: 1), in: string)!
let nameRange = Range(match.range(at: 2), in: string)!
return Presentation(id: Int(string[numberRange])!, name: String(string[nameRange]))
}
print(presentations)
推荐阅读
- django - Django Ajax Post - 有时有效
- laravel - 使用 URL 而不是服务名称通过 docker compose 连接服务
- c# - 如何将 OCR 文本数据复制到新的 pdf Itext 7 C#
- python - 创建虚假数据
- angular - 如何用 Ivy 扩展 Angular 的类装饰器?
- python - 未处理的异常:SocketException:操作系统错误:连接被拒绝,errno = 111,地址 = 127.0.0.1,端口 = 56782 python
- reactjs - 在 Apollo 3 中设置默认缓存值
- reactjs - React Core UI 管理模板路由问题
- ios - 如何获得模态呈现的视图控制器的根视图高度?
- javascript - 使用全局接口时在 Mocha 测试中使用 Object.defineProperty 会导致 ReferenceError: X is not defined