c# - 如何在正确的位置生成带有 'and' 的字符串

标签 c# string loops

这是我到目前为止的循环

foreach (CheckBox chk in gpbSchedule.Controls.OfType<CheckBox>())
                {
                    if (chk.Checked)
                    {
                        //Code goes here
                    }
                }

复选框都有星期几的文本值。周一、周二等。

我希望最终结果是一个看起来像“星期一、星期二和星期五”的字符串,具体取决于是否选中该框。

循环将更改一个 bool 值,以便知道是否至少选中了一个复选框。这将在显示生成的字符串之后的 if 语句中使用,因此如果未选中任何字符串,则不会显示任何字符串。我认为这意味着如果有帮助,字符串看起来像什么并不重要。

我希望我已经说清楚了。如果您需要更多详细信息,请询问。

提前谢谢你。


当前代码:

string days = "*";
        foreach (CheckBox chk in gpbSchedule.Controls.OfType<CheckBox>())
        {
            if (chk.Checked)
            {
                days += "#" + chk.Text;
            }
        }

        days = days.Insert(days.LastIndexOf('#'), " and ");
        days = days.Remove(days.LastIndexOf('#'), 1);
        days = days.Replace("#", ", ");
        days = days.Replace("* and ", "");
        days = days.Replace("*, ", "");

有人能看出这有什么问题吗?

最佳答案

我能想到的最简单的方法是更改​​您的 foreachfor环形。我现在没有打开我的 IDE,所以我无法仔细检查捕获控件,但是一旦你有一个 List<CheckBox>你可以使用(不是必需的,只是对我来说更直接一点)你可以得到类似的东西:

//ckBoxes is our List<CheckBox>
for(int i = 0; i < ckBoxes.Count; i++)
{
  StringBuilder listBuilder = new StringBuilder;
  if(i == ckBoxes.Count -1)
  {
    listBuilder.Append("and " + dayOfWeek)
  }
  else listBuilder.Append(dayOfWeek + ", ");
}

这非常非常粗糙,在您使用它之前需要进行大量清洁,但它应该会让您走上一条可行的道路。

关于c# - 如何在正确的位置生成带有 'and' 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440605/

相关文章:

java - 有没有更好的方法来实现这些嵌套循环?

Python:迭代元组时是否保留顺序?

c# - 为什么随机总是总是进行相同的选择?

c++ - 对大字符串进行更快的操作

sql - 批量更新 Excel 文件连接字符串

java - 从 a a + b + c = d 字符串中取出第三个数字

JavaScript选择自己的冒险游戏随机数函数循环问题

c# - 15 秒后自动隐藏 C# 中的 ViewBag 消息

c# - Array.Count() 比 List.Count() 慢得多

c# - 基于 ASP.NET Core 中的现有数据库创建 Entity Framework 模型