这是我到目前为止的循环
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("*, ", "");
有人能看出这有什么问题吗?
最佳答案
我能想到的最简单的方法是更改您的 foreach
到 for
环形。我现在没有打开我的 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/