我试图找出一种用升序数替换子串的出现次数的方法。
如果我们说子字符串,我想要替换为"foo"
而整个字符串是"bar foo foo bar bar foo bar"
,最后的字符串将是"bar 0 1 bar bar 2 bar"
。
我已经搜索谷歌寻求解决方案,但没有找到答案。我能找到的最接近的是用特定字符串替换所有出现的子字符串。
答案 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);
我认为这更容易理解。