快速有效地分割字符串

时间:2019-12-16 08:59:37

标签: swift string split

我有很多这样的字符串:

"substring1:substring2:...:substring9"

因此,字符串中的子字符串总数始终为9,并且字符串中的某些子字符串可能为空。

我想将":"的字符串分割成字符串数组,我这样做是这样的:

let separator = Character(":")

let arrayOfStrings = string.split(separator: separator, maxSplits: 8, omittingEmptySubsequences: false).map({ String($0) })

例如,对于13.5k个字符串,将它们转换为字符串数组大约需要150毫秒。

是否还有其他方法在时间上更有效?

1 个答案:

答案 0 :(得分:2)

尝试一下:

 let arrayOfStrings = string.components(separatedBy: ":")

这将提高性能,因为它不使用.map(),这在您的情况下并不是必需的。

如@Martin R建议的那样,如果可以使用SubString数组,则以下命令应会更好:

let arrayOfStrings = string.split(separatedBy: ":")

split返回[Substring],它仅使用引用,不分配新的String,并且应该更快。 另外,.splitString上的方法(不同于.component是NSString上的方法),因此没有@JeremyP指出的桥接转换。