Duplicate possible:
Comment remplacer la première instance d'une chaîne dans .NET?
Disons que j'ai la ficelle:
string s = "Hello world.";
comment puis-je remplacer le premier o
dans le mot Hello
pour disons Foo
?
En d'autres termes, je veux me retrouver avec:
"HellFoo world."
Je sais comment remplacer tous les o mais je veux ne remplacer que le premier
Je pense que vous pouvez utiliser la surcharge de Regex.Replace pour spécifier le nombre maximal de fois à remplacer ...
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);
}
voici une méthode d'extension qui pourrait également fonctionner également par demande 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);
}
}
Vous pouvez le faire de différentes manières, mais le plus rapide peut-être utiliser IndexOf pour rechercher la position d'index de la lettre que vous souhaitez remplacer, puis soustraire le texte avant et après ce que vous souhaitez remplacer.