如何排序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不是一个应该和其他数字一起排序的数字
是否足以检查点(.
)后您的索引号为好?
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;
}
创建一个新类,用于存储当前创建列表的字符串和要排序的数值。然后将排序方法更改为只使用新类中的数字字段。