我有很多这样的字符串:
"substring1:substring2:...:substring9"
因此,字符串中的子字符串总数始终为9,并且字符串中的某些子字符串可能为空。
我想将":"
的字符串分割成字符串数组,我这样做是这样的:
let separator = Character(":")
let arrayOfStrings = string.split(separator: separator, maxSplits: 8, omittingEmptySubsequences: false).map({ String($0) })
例如,对于13.5k个字符串,将它们转换为字符串数组大约需要150毫秒。
是否还有其他方法在时间上更有效?
答案 0 :(得分:2)
尝试一下:
let arrayOfStrings = string.components(separatedBy: ":")
这将提高性能,因为它不使用.map()
,这在您的情况下并不是必需的。
或
如@Martin R建议的那样,如果可以使用SubString
数组,则以下命令应会更好:
let arrayOfStrings = string.split(separatedBy: ":")
split
返回[Substring]
,它仅使用引用,不分配新的String,并且应该更快。
另外,.split
是String
上的方法(不同于.component
是NSString上的方法),因此没有@JeremyP指出的桥接转换。