用stringreplace第一个出现的模式

可能重复:
如何在.NET中replacestring的第一个实例

比方说,我有string:

string s = "Hello world."; 

我怎样才能取代第一个在Hello我们说Foo这个词?

换句话说,我想最终:

 "HellFoo world." 

我知道如何取代所有的o,但我想只取代第一个

我想你可以使用Regex.Replace的重载来指定最大的replace次数。

 var regex = new Regex(Regex.Escape("o")); var newText = regex.Replace("Hello World", "Foo", 1); 
 public string ReplaceFirst(string text, string search, string replace) { int pos = text.IndexOf(search); if (pos < 0) { return text; } return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); } 

这里是一个扩展方法,也可以为每个VoidKing请求工作

 public static class StringExtensionMethods { public static string ReplaceFirst(this string text, string search, string replace) { int pos = text.IndexOf(search); if (pos < 0) { return text; } return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); } } 

有很多方法可以做到这一点,但最快的可能是使用IndexOf来查找要replace的字母的索引位置,然后在要replace的字符前后排除文本的索引位置。