如何排序List当数字是字符串的一部分时,由低到高的数字

本文关键字:数字 分时 一部 何排序 字符串 List 排序 string | 更新日期: 2023-09-27 18:16:30

我有一个List,在本例中,第一个索引是:

"07:53 אזעקה באשדוד, ביתר עילית, גן יבנה, מעלה אדומים, קריית מלאכי ובמ״א באר"

这是一个标题,它是一个字符串,但我认为它是一个标题。指数是:"1;你好"指数2是:"5"。hello world "

等等,例如索引7是:"66。嗨"

问题是在索引7中我有"66"。在索引2 ' 5。在索引9中,我有"3.

"

后面带点的数字是字符串的一部分,但我仍然希望根据字符串中的数字对List进行排序。

这是我如何每次创建一个List

public List<string> GetResponsers(string contents)
{
    string responser = "";
    List<string> threadList = new List<string>();
    int f = 0;
    int startPos = 0;
    while (true)
    {
        string firstTag = "<FONT CLASS='text16b'>";
        string lastTag = "&n";
        f = contents.IndexOf(firstTag, startPos);
        if (f == -1)
        {
            break;
        }
        int g = contents.IndexOf(lastTag, f);
        startPos = g + lastTag.Length;
        responser = contents.Substring(f + 22, g - f - 22);
        threadList.Add(responser);
    }
    SortList(threadList);
    return threadList;
}

我是这样排序的:

public List<string> SortList(List<string> thread)
{
    thread = thread
        .OrderBy(str =>
         {
             var match = Regex.Match(str, @"^([-+]?'d+)");
             return match.Success ? int.Parse(match.Groups[1].Value) : int.MaxValue;
         })
         .ToList();
    responsers.Add(new List<string>(thread));
    return thread;
}

问题是,例如在List中,第一个索引(索引0)即标题是这样的:

这是索引0:07:53אזעקהבאשדוד,ביתרעילית,גןיבנה,מעלהאדומים,קרייתמלאכיובמ״אבאר这一个不应该被排序为数字,但由于它最后有一个数字:07:53,它将排序并将其放在索引号为7的地方因为它有07

或者如果我有另一个列表,在索引0中有:07:48因为07它会把索引0放到索引7

但是我需要在任何情况下索引0都是最后一个索引

SortList方法是有效的,但是在像07:48这样的情况下,它会把它放在索引07中,而不仅仅是在最后一个索引中。07:48不应该是另一个数字1的一部分。2. 3.4. 5. 6 .

字符串中的数字总是这样开始的:"1。号码,点,空间

" 2。"55。

但是07:43不是一个应该和其他数字一起排序的数字

如何排序List<string>当数字是字符串的一部分时,由低到高的数字

是否足以检查点(.)后您的索引号为好?

public List<string> SortList(List<string> thread)
{
    thread = thread
        .OrderBy(str =>
        {
            var match = Regex.Match(str, @"^([-+]?'d+)'.");
            return match.Success ? int.Parse(match.Groups[1].Value) : int.MaxValue;
        })
        .ToList();
    responsers.Add(thread); // was: responsers.Add(new List<string>(thread));
    return thread;
}

创建一个新类,用于存储当前创建列表的字符串和要排序的数值。然后将排序方法更改为只使用新类中的数字字段。