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

发布于 2024-10-19 03:50:05 字数 1163 浏览 6 评论 0原文

作为搜索查询,这是一个很难表达的问题,而且我运气不好。我越想越觉得这更像是一个逻辑问题,而不是语法问题。不过,我是 C# 新手(8 年 php),目前正在构建我的第三个 Windows 窗体应用程序,因此可能有一种方法可以实现我想要的功能。

我正在做的是将用户给出的日期格式作为单个字符串读取,并将其分解为要分配给数组的部分,或者从我在搜索关联数组(可能是排序列表或字典)中看到的内容。

例如

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 从文件中提取真实日期。我想使用这些新值来了解匹配的哪个组元素用于日期的每个部分。

任何帮助我解决这个问题的帮助将不胜感激。

This is a tough one to phrase as a search query and I'm having no luck. And the more I think about it, it is more a logic question than a syntax one. However I am a newby to C# (8 years php) and I am currently building my third windows forms app so there may be a method built to do just what I want.

What I am doing is reading a date format given by the user as a single string and breaking it into parts to be assigned to an Array, or from what I have seen in my searches for Associative Arrays, maybe a SortedList or 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;

Ideally, the finished result that I am after for this collection/array is to have the members ranked by the value of their position in the string. Like this:

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

The reason I am trying to do this, is because the same date format is used to pull out a real date from a file using Regex.Match. And I want to use these new values to know which group element of the match to use for each portion of the date.

Any help getting my head around this would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

删除→记忆 2024-10-26 03:50:05

我尝试了这个并且它有效:

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

I tried this and it works:

DateTime dt;
if (DateTime.TryParseExact("20110223", "yyyyMMdd", null, 0, out dt))
    Console.WriteLine(dt);
当爱已成负担 2024-10-26 03:50:05

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

Just use DateTime.TryParse. You can pass it a formatting string and it will do all the work for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文