我有一个List,在这种情况下,例如第一个索引是:
"07:53 אזעקה באשדוד, ביתר עילית, גן יבנה, מעלה אדומים, קריית מלאכי ובמ״א באר"
这是一个标题,它是一个字符串,但我认为它是一个标题。 索引是:“1。你好” 索引2是:“5. hello world”
依此类推,例如索引7是:“66。hi all”
问题是在索引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אזעקהבמ"אמרחבים 所以再次因为它将把这个指数0放在指数7
但我需要在任何情况下,索引0将在最后一个索引
SortList方法正在运行,但在像07:48这样的情况下,它会将它放在索引07中,而不仅仅是在最后一个索引中。 07:48不应该是另一个数字1的一部分.2。3. 4. 5. 6。
字符串中的数字始终如下:“1。 号,点,空间
“2。 “55.
但07:43不是一个应与其他人分类的数字。
答案 0 :(得分:0)
创建一个新类,用于存储当前正在创建列表的字符串和要排序的数值。然后将排序方法更改为仅使用新类中的数字字段。
答案 1 :(得分:0)
是否足以检查索引编号后的点(.
)?
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;
}