190 votes

Remplacer la première occurrence du motif dans une chaîne

Double Possible:
Comment puis-je remplacer la première occurrence d'une chaîne dans .NET?

Disons que j'ai de la chaîne:

string s = "Hello world.";

comment puis-je remplacer la première o dans le mot Hello , disons Foo?

En d'autres termes je veux retrouver avec:

"HellFoo world."

Je sais comment remplacer tous les o mais je veux remplacer seulement le premier

248voto

Reddog Points 7462

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

247voto

DJ KRAZE Points 8546
 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 par requête 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);
    }
}
 

11voto

Mitchel Sellers Points 38352

Vous pouvez procéder de différentes manières, mais le plus rapide peut-être utiliser IndexOf pour rechercher la position d'index de la lettre à remplacer, puis extraire le texte en sous-chaîne avant et après ce que vous souhaitez remplacer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X