可能性のある複製:
。NETの文字列の最初のインスタンスを置き換える方法
文字列があるとしましょう:
string s = "Hello world.";
wordの最初のo
をHello
と置き換えてどうすればFoo
と言うことができますか?
つまり、次のようになりたいと思います。
"HellFoo world."
私はすべてのoを置き換える方法を知っていますが、最初のものだけを置き換えたいです
Regex.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を使用して、置換する文字のインデックス位置を見つけ、置換する前後のテキストを部分文字列にすることです。