Swift 5,Xcode 10。
我正在遍历一个字符串数组(大小可能小于20),每个字符串看起来都像这样:
johnsmith.20190202102030.conf
janedoe.19700101115959.conf
我事先知道第一部分(名称),但想提取中间部分(生日:8、12或14个字符长)。
版本1:
let f = "johnsmith.20190202102030.conf"
let name = "johnsmith"
let start = f.index(f.startIndex, offsetBy: name.count+1)
let end = f.index(f.startIndex, offsetBy: f.count-5)
let birthday = String(f[start..<end])
版本2:
let f = "johnsmith.20190202102030.conf"
let farr = f.split(separator: ".").map(String.init)
let birthday = farr[1]
我目前仅对10个字符串执行此操作,并且(当然)没有注意到速度上的任何差异。即使有100个Strings,也可能不会有太大的区别,但是我很好奇:
忽略代码的长度和潜在的错误,是否有理由(个人喜好除外)偏爱使用一个版本而不是另一个版本(例如使用100k字符串的速度-我不要求实际测量!)? / p>
答案 0 :(得分:1)
从我的粗略测试来看,子字符串版本似乎更快。但是,在您的情况下,我会选择使用by_y
版本。该代码对我而言更具可读性。