当我检查第一个复选框时,将“ hello”字符串分配给标签文本,然后我检查第二个复选框,以添加字符串“ world”,因此标签的文本变为“ hello world”,如果我未选中第二个复选框,则会出现问题我无法删除字符串“ world”,这是代码:
public void checkBox1_Checked(){
if(checkBox1.checked == true){
label1.text = "hello ";
}
}
public void checkBox2_Checked(){
if(checkBox2.checked == true){
label1.text += "world";
}
else{ //here is the problem
label1.text -= "world";
}
}
我如何删除字符串“ world”,以便标签的文本仅变为“ hello”?
答案 0 :(得分:1)
您可以使用String.Replace
。
label1.Text = label.Text.Replace("world", String.Empty);
字符串上的 +=
是s = s + "something"
的快捷方式。
我从未见过一种编程语言,您可以在其中删除单词。
如果重复单词,则复杂性更高。 “ hello world world”将变为“ hello”。如果您只想从另一个字符串的末尾删除一个字符串,则可以寻找TrimEnd
解决方案。
答案 1 :(得分:1)
我认为取消选中checkBox1应该删除“ Hello”?
这是一种解决所有四种可能性的方法...“”,“ Hello”,“ Hello World”和“ World”:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
fooBar();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
fooBar();
}
private void fooBar()
{
label1.Text = (checkBox1.Checked ? "Hello" : "") +
(checkBox1.Checked && checkBox2.Checked ? " " : "") +
(checkBox2.Checked ? "World" : "");
}
如果“ Hello”和“ World”的顺序不重要,那么这也许更符合您的喜好?
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
label1.Text += (label1.Text.Length == 0 ? "" : " ") + "Hello";
}
else
{
label1.Text = label1.Text.Replace("Hello", "").Trim();
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
label1.Text += (label1.Text.Length == 0 ? "" : " ") + "World";
}
else
{
label1.Text = label1.Text.Replace("World", "").Trim();
}
}