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

C# 从标签c中删除特定字符串#,c#,.net,C#,.net,当我选中第一个复选框时,标签文本被分配了一个“hello”字符串,然后我选中第二个复选框添加字符串“world”,这样标签的文本就变成了“hello world”,如果我选中第二个复选框,我就无法删除字符串“world”,代码如下: public void checkBox1_Checked(){ if(checkBox1.checked == true){ label1.text = "hello "; } } public void checkBox2

当我选中第一个复选框时,标签文本被分配了一个“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”?

您可以使用
string.Replace

label1.Text = label.Text.Replace("world", String.Empty);
字符串上的
+=
s=s+“某物”
的快捷方式。 我从未见过一种编程语言可以从结尾删除单词


如果这个词被重复,就会有更多的复杂性。“你好世界”将变成“你好”。如果您只想从另一个字符串的末尾删除一个字符串,可以查找
TrimEnd
解决方案。

我假设取消选中复选框1应该删除“Hello”

这里有一种方法可以考虑所有四种可能性……”、“你好”、“你好世界”和“世界”:

如果“你好”和“世界”的顺序不重要,那么也许这更符合你的喜好

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

使用该方法。
字符串
类不像
+=
那样重写
-=
操作符。你的代码有点奇怪。如果有人检查cb2,则(假设
label1
开始为空),
label1
将变为“世界”,如果有人检查cb1,则将变为“你好”。如果您取消选中cb2,您将尝试从字符串“hello”中删除“world”。@Jesse我实际上知道我只是想澄清我的问题,也许我做得不对,谢谢anyway@Flydog57是的,这是真的我知道,我不得不这样问,只是为了知道如何从标签上删除任何字符串,很抱歉,关于带字符串的
+=
-=
的问题是
+=
总是会成功(内存耗尽或耗尽)。字符串连接是一件非常常见的事情。但是,
-=
意味着什么呢。如果我有一个字符串,比如
s=“需要ui更改”我试着做
s-=“ui”代码应该是什么:1)没有什么,在结尾没有“UI”,2)在“需要”中删除“UI”,或者3)在中间显示“独立的”UI。我会在世界之前放置一个空间,这样多个点击不会以多个空间结束。你可以将它合并成一个单独的处理程序。(将
checkBox1,CheckChanged
checkBox2,CheckChanged
事件指向一个处理程序)。它可以在上面的代码中滚动
fooBar
。如果您需要确定哪个复选框发生了更改(此处您没有),您可以查看
sender
@Flydog57。在代码中很难显示两个复选框在不向帖子添加更多内容的情况下触发同一个处理程序,因此我将它们分开。我的评论更多是为了OP的利益,而不是为了您的利益。@Idle\u注意,我相信第二个选择更可能是我的选择,在这种情况下,如果我选中y复选框将显示单词,然后如果我取消选中其中一个,单词将被删除,因此这将实现所有可能性:“hello world”、“world hello”、“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();
    }
}