从文本中删除3个相同的单词并非全部

问题描述 投票:0回答:4

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

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

private void button4_Click(object sender, EventArgs e)
{
    textBox3.Text = textBox3.Text.Replace("apple","");
}

我只想删除3个单词。你知道如何实现这个目标吗?

c# string
4个回答
2
投票

您可以尝试在字符串中三次(或更少,如果它没有出现三次)查找单词“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;
}

6
投票

您可以使用Regex.Replace的重载来指定要替换的最大次数

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

4
投票

另一种可能性是Split(将"apple"作为分离器处理)和Concat回来:

// 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));

-3
投票

有多种方法可以达到你想要的效果。 1是使用正则表达式,而下面的1是作为样本,基本上循环并替换你想要它的时间。

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

textBox3.Text=value;
© www.soinside.com 2019 - 2024. All rights reserved.