gpt4 book ai didi

当在特定日期找不到值时拆分日期范围的 C# 函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:23 25 4
gpt4 key购买 nike

我有一个日期范围为字符串的列表(例如“2019-05-01”、“2019-05-02”、“2019-05-05”...),以及一个相同的数组包含 bool 值的长度。

我需要检查日期范围内的每一天与它在 bool 区域中的相应值,对于值为 FALSE 的任何一天,从日期范围中删除日期并将其分成两个范围未找到值。

我一直在寻找适合这种模式的算法,但没有找到任何在删除一天时会分割日期范围的算法。

List<Tuple<string, string>> ranges = new List<Tuple<string, string>>();

List<string> dt_range = new List<string>() { "2019-05-01", "2019-05-02", "2019-05-03", "2019-05-04", "2019-05-05", "2019-05-06" };
var valid = new bool[dt_range.Count];
valid[0] = true;
valid[1] = true;
valid[2] = false;
valid[3] = false;
valid[4] = true;
valid[5] = true;

for(var i = 0; i < dt_range; i++)
{
if(valid[i] == true)
{
// Continue checking days
}
else if (valid[i] == false)
{
// remove this day from date range, and create
// date range prior and following this, while
// continuing to check for the rest of the days
}
}

因此,如果 2019-05-03 的值为 FALSE,则范围将分为 (2019-05-01,2019-05-02) 和 (2019-05-04,2019-05-05) ,2019,05-06), 并会继续检查第二个范围,如果需要则分手。第一个范围(2019-05-01,2019-05-02)将被添加到范围列表>,而第二个范围在添加到范围列表之前需要继续验证。

我在解决这个问题时遇到了精神障碍,我们将不胜感激。

最佳答案

只有一个循环就可以了

List<Tuple<string, string>> ranges = new List<Tuple<string, string>>();
string str1 = null;
string str2 = null;
for (int i = 0; i < dt_range.Count; i++)
{
if (valid[i])
{
if (str1 == null)
{
str1 = dt_range[i];
}
str2 = dt_range[i];
}
else
{
if (str1 != null)
{
ranges.Add(Tuple.Create(str1, str2));
}
str1 = null;
}
}
if (str1 != null)
{
ranges.Add(Tuple.Create(str1, str2));
}

关于当在特定日期找不到值时拆分日期范围的 C# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57060190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com