用升序替换所有出现的子字符串

时间:2015-11-17 13:13:44

标签: c# string

我试图找出一种用升序数替换子串的出现次数的方法。

如果我们说子字符串,我想要替换为"foo"而整个字符串是"bar foo foo bar bar foo bar",最后的字符串将是"bar 0 1 bar bar 2 bar"

我已经搜索谷歌寻求解决方案,但没有找到答案。我能找到的最接近的是用特定字符串替换所有出现的子字符串。

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用Regex.Replace和内联MatchEvaluator返回并递增计数器:

var str = "bar foo foo bar bar foo bar";
var r = new Regex("foo");
var c = 0;
var replacedString = r.Replace(str, m => (c++).ToString());
    // = bar 0 1 bar bar 2 bar

答案 1 :(得分:0)

你也可以这样做:

        string input = "bar foo foo bar bar foo bar";
        string output = string.Empty;

        var words = input.Split(' ');
        int numberOfOccurencies = 0;
        for (int i = 0; i < words.Count(); i++)
        {

            if (words[i] == "foo")
            {
                words[i] = numberOfOccurencies.ToString();
                numberOfOccurencies++;
            }
        }
        output = string.Join(" ", words);

我认为这更容易理解。