C#4.0 - 3对值(可能更多)。根据值排序

时间:2011-02-23 01:33:55

标签: c# .net arrays logic sortedlist

这是一个很难用短语作为搜索查询,我没有运气。我越是想到它,它就是一个逻辑问题,而不是语法问题。然而,我是C#的新手(8年php),我正在构建我的第三个Windows窗体应用程序,所以可能有一个方法可以做我想要的。

我正在做的是将用户给出的日期格式作为单个字符串读取并将其分成要分配给数组的部分,或者从我在搜索关联数组中看到的内容,可能是SortedList或Dictionary

e.g。

SortedList<string, int> resultArray = new SortedList<string, int>();
string dateFormat = "yyyyMMdd" // Just and example

int yearPos = dateFormat.IndexOf("yyyy");
int monthPos = dateFormat.IndexOf("MM");
int dayPos = dateFormat.IndexOf("dd");

resultArray.Add("yearPos", yearPos);
resultArray.Add("monthPos", monthPos);
resultArray.Add("dayPos", dayPos);

// So, resultArray expressed as an array looks like:
// resultArray["yearPos"] = 0
// resultArray["monthPos"] = 4
// resultArray["dayPos"] = 6

// Sort List and reassign keys (or values) based on their position value (which is unique)
// ???????

return resultArray;

理想情况下,我为此集合/数组所完成的结果是让成员按其在字符串中的位置值进行排名。像这样:

// resultArray["yearPos"] = 1
// resultArray["monthPos"] = 2
// resultArray["dayPos"] = 3

我尝试这样做的原因是因为使用相同的日期格式来使用Regex.Match从文件中提取实际日期。我想使用这些新值来了解匹配的哪个组元素用于日期的每个部分。

任何有助于理解这一点的人都会非常感激。

2 个答案:

答案 0 :(得分:1)

只需使用DateTime.TryParse即可。您可以传递一个格式化字符串,它将为您完成所有工作。

答案 1 :(得分:1)

我试过这个并且有效:

DateTime dt;
if (DateTime.TryParseExact("20110223", "yyyyMMdd", null, 0, out dt))
    Console.WriteLine(dt);