VB.NET使用split函数对数组进行排序

时间:2018-03-01 13:37:16

标签: arrays vb.net sorting

我已经创建了这个程序,它将组装一个排行榜数组,该数组将存储游戏中得分与用户名的分数。每次玩游戏时,此排行榜都会不断更新。这些分数被附加到文本文件中,并且文本文件的内容被输入到排行榜数组中。我想对这个数组进行排序,以便分数下降,当然在相应的分数旁边有玩家名字。该数组看起来像这样:

  

| User1,9.0,2,0 | User2,8.0,0,1 | User3,8.5,0,1

所以这个数组的格式如下:

  

| Username1,totalscore,wins,loss |用户名2,总计,赢,输等......

如何对此数组进行排序,以便得分最高的用户首先出现在数组中并显示它?我听说合并排序最简单,但这是真的吗?我感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您可以通过稀释度"|"进行拆分,然后像这样使用OrderByDescending

Dim resultSet As String() = myString.Split("|"c) _
        .Where(Function(s) Not String.IsNullOrWhitespace(s)) _
        .OrderByDescending(
            Function(s) 
                Dim str as String = s.Substring(s.IndexOf(" ") + 1)
                Dim count As Integer = str.IndexOf(",")             
                Return Double.Parse(str.Substring(0, count))
            End Function) _
        .ToArray()

或者如果您希望元素成为List(Of String),则只需更改:

Dim resultSet As String()

为:

Dim resultSet As List(Of String)

然后在上面的管道中将ToArray()调用更改为ToList()

上述代码的最终结果是String数组:

User1, 9.0, 2, 0
User3, 8.5, 0, 1
User2, 8.0, 0, 1

不要忘记使用这些导入:

Imports System.Linq 
Imports System.Collections.Generic