我正在解析一行文本的前两个字符,并与可能的模式进行大量比较:
在my Card类中:
static let ourTypes = ["PL", "SY", "XT"]
在许多其他地方:
if Card.ourTypes.contains(line[0..<2]) { continue }
Swift4 (3?)将[]改为返回子字符串。我知道我可以用String(line[0..<2])
将其转换回来,但我怀疑这是错误的解决方案...有没有更好的方法?
发布于 2019-06-14 01:53:18
一种方法是将您的ourTypes
数组设置为[Substring]
,这样您就不必转换您的Substring
来使contains
工作:
static let ourTypes: [Substring] = ["PL", "SY", "XT"]
if Card.ourTypes.contains(line.prefix(2)) { continue }
@matt观察到,使用contains
搜索比使用Set
更好(因为它更高效)可以通过以下方式完成:
static let ourTypes: Set<Substring> = ["PL", "SY", "XT"]
https://stackoverflow.com/questions/56585843
复制相似问题