替换字符串中第一次出现的模式

< p > 可能的重复: < br > 我如何替换第一个实例的字符串在。net ? < / p >

假设我有一个字符串

string s = "Hello world.";

我如何替换第一个o在词Hello让我们说Foo?

换句话说,我想以:

"HellFoo world."

我知道如何替换所有的o但我只想替换第一个o

202206 次浏览

有许多方法可以做到这一点,但最快的方法可能是使用IndexOf来查找想要替换的字母的索引位置,然后在想要替换的字母之前和之后用子字符串输出文本。

if (s.Contains("o"))
{
s = s.Remove(s.IndexOf('o')) + "Foo" + s.Substring(s.IndexOf('o') + 1);
}

我认为你可以使用正则表达式。取代的重载来指定替换…的最大次数。

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