是否可以使用正则表达式仅替换特定字符串的X个出现次数?
例如,如果我在字符串中有10个单词'lion',我可以使用正则表达式来替换前6个出现而不是全部吗?
答案 0 :(得分:3)
带有“count”参数的重载应该可以达到你想要的效果。
Regex cat = new Regex("cat");
string input = "cat cat cat cat cat";
Console.WriteLine(cat.Replace(input, "dog", 3));
Console.ReadLine();
输出应为: “狗狗狗猫猫”
答案 1 :(得分:2)
我从来没有用它,所以不能说有效性,但regex.replace有一个重载,需要int count来定义出现次数
http://msdn.microsoft.com/en-us/library/h0y2x3xs%28v=VS.90%29.aspx
答案 2 :(得分:0)
以下代码可能有所帮助。
string s = "lionlionlionlionlionlionlionlionlionlion";
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("lion");
s = r.Replace(s, "donkey", 6, 0);
Console.Out.Write(s);
输出为donkeydonkeydonkeydonkeydonkeydonkeylionlionlionlion
。
您还可以按如下方式动态更改替换字符串:
private string replaceMe(System.Text.RegularExpressions.Match m)
{
return "donkey[" + m.Index.ToString() + "]";
}
private replaceStr() {
string s = "lionlionlionlionlionlionlionlionlionlion";
Regex r = new Regex("lion");
s = r.Replace(s, new System.Text.RegularExpressions.MatchEvaluator(replaceMe),6);
Console.Out.Write(s);
}
然后输出为donkey[0]donkey[4]donkey[8]donkey[12]donkey[16]donkey[20]lionlionlionlion
。