从标签C#中删除特定字符串

时间:2020-04-28 21:34:01

标签: c# .net

当我检查第一个复选框时,将“ 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”?

2 个答案:

答案 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();
    }
}