C# 从文本中删除3个相同的单词,而不是全部

C# 从文本中删除3个相同的单词,而不是全部,c#,string,C#,String,我想从一串文本框中删除名为“苹果”的3单词。 文本框包含3个以上的苹果单词。我只需要选择3个来删除 我使用了这段代码,但它从字符串中删除了所有苹果单词 private void button4_Click(object sender, EventArgs e) { textBox3.Text = textBox3.Text.Replace("apple",""); } 我只想删除3个字。你知道如何做到这一点吗 有多种方法可以实现你想要的。1个is使用正则表达式,1个is作为下面的示例,

我想从一串文本框中删除名为“苹果”的3单词。 文本框包含3个以上的苹果单词。我只需要选择3个来删除

我使用了这段代码,但它从字符串中删除了所有苹果单词

private void button4_Click(object sender, EventArgs e)
{
    textBox3.Text = textBox3.Text.Replace("apple","");
}
我只想删除3个字。你知道如何做到这一点吗


有多种方法可以实现你想要的。1个is使用正则表达式,1个is作为下面的示例,基本上循环并替换您希望的次数

string value = textBox3.Text;
for(int a = 0; a < 2;a++){
value = value.replace("apple","");
}

textBox3.Text=value;
string value=textBox3.Text;
对于(int a=0;a<2;a++){
value=value.replace(“苹果”和“);
}
textBox3.Text=值;

您可以尝试在字符串中查找单词“apple”三次(如果没有出现三次,则查找次数可以减少),然后将其从当前字符串中删除

private void button4_Click(object sender, EventArgs e)
{
    const string stringToRemove = "apple";

    int i = 0;
    int index = 0;
    string textBoxString = textBox3.Text;

    while(i<3 && index >= 0)
    {
        index = textBoxString.IndexOf(stringToRemove);

        textBoxString = (index < 0)? textBoxString : textBoxString.Remove(index, stringToRemove.Length);
        i++;
    }

    textBox3.Text = textBoxString;
}
private void按钮4\u单击(对象发送者,事件参数e)
{
常量字符串stringToRemove=“苹果”;
int i=0;
int指数=0;
string textBoxString=textBox3.Text;
while(i=0)
{
index=textBoxString.IndexOf(stringToRemove);
textBoxString=(索引<0)?textBoxString:textBoxString.Remove(索引,stringToRemove.Length);
i++;
}
textBox3.Text=textBoxString;
}

您可以使用的重载指定替换的最大次数

var regex = new Regex("apple");
var newText = regex.Replace(textBox3.Text, "", 3);

另一种可能是
拆分
(将
“苹果”
视为分隔符)并
返回:

// 3 + 1: we want 3 separators to be eliminated, and thus 4 = 3 + 1 parts 
textBox3.Text = string.Concat(textBox3.Text
  .Split(new string[] { "apple" }, 3 + 1, StringSplitOptions.None));

向我们展示您迄今为止试图解决的问题,请更具体一些。您是否尝试过对已有的代码进行任何改进?如果您只想替换三个实例,那么哪些实例重要吗?在这一点上,您的问题基本上只是要求我们为您编写一个正确的实现,这并不是堆栈溢出存在的原因。我将编辑againI,尝试从for循环中执行它。输入代码后,我意识到它不起作用。。。字符串get=sb.ToString();对于(int j=0;ji++
吗?这里的更改次数不能超过3次。在string.Join的帮助下,您还可以将其更改为替换方法;o) @Sir Rufo:完全正确,但是
string.Concat(…)
string.Join(“,…)
更短,可读性更高。当然,下面的KISS yours是正确的解决方案。我的评论是对未来读者问自己应该如何做一个替换如果<代码>苹果<代码>可能是一个不同的值(例如,代码>苹果。< /代码>)考虑调用字符串。