0

我有一个循环读取大量字符串,每个字符串都包含由字符(¥)分割的信息。对于这个循环,我只需要最终值,我知道它的索引。我想知道使用 string.split 还是使用 substring.lastindexof 是否更好。

如果有帮助,拆分的索引是 8。

哪个会更快。另外,我对 char 的选择对拆分有影响吗?(例如¥ vs` vs ")

谢谢。

4

1 回答 1

0

人们似乎倾向于 substring(lastindexof) 而不是 string.split - 我只是做了一个小的计时器测试,看看哪个更快。

For count As Integer = 0 To existing.Count - 1
        If File.Exists(existing(count).Substring(existing(count).LastIndexOf("¥") + 1)) Then 'File.Exists(existing(count).Split(CChar("¥"))(8)) Then
            outputfile.Add(existing(count))
        Else
            outputfile.Add(String.Empty)
        End If
        Next

现在这种情况下的字符串用于 mp3 标签信息和路径。它们通常看起来像

"Opeth¥Apostle In Triumph Demo¥Apostle In Triumph Demo Part 1¥1:41¥1¥1984¥Progressive Death/Doom/Folk Metal¥¥C:\Users\black\Music\Opeth\Apostle In Triumph Demo\Opeth -使徒凯旋演示第 1 部分.mp3"

因此,它通过 8022 个字符串检查文件是否存在(使用existing(count).split(cchar("¥"))(8))existing(count).Substring(existing(count).lastindexof("¥") + 1)),然后将值放入列表中。

在我测试这两种方法的 10 次中,拆分方法总是更快——平均快 32 毫秒,或者快 2.27%。

难道我做错了什么?

于 2016-04-07T15:48:03.037 回答