J'ai une chaîne sur laquelle j'ai besoin de faire quelques remplacements. J'ai un Dictionary<string, string>
où j'ai des paires de recherche-remplacement définies. J'ai créé les méthodes d'extension suivantes pour effectuer cette opération:Chaîne C# remplacer par dictionnaire
public static string Replace(this string str, Dictionary<string, string> dict)
{
StringBuilder sb = new StringBuilder(str);
return sb.Replace(dict).ToString();
}
public static StringBuild Replace(this StringBuilder sb,
Dictionary<string, string> dict)
{
foreach (KeyValuePair<string, string> replacement in dict)
{
sb.Replace(replacement.Key, replacement.Value);
}
return sb;
}
Y a-t-il une meilleure façon de procéder?
Grande réponse. Je pense que votre proposition sera meilleure que l'itération sur l'ensemble du dictionnaire car l'expression régulière ne remplacera que les jetons trouvés. Il ne vérifie pas pour tous ceux qui peuvent éventuellement être à l'intérieur.Donc, si j'ai un gros dictionnaire et un petit nombre de jetons dans la chaîne d'entrée qui peut réellement donner un coup de pouce à mon application. – RaYell
Très utile. Je l'ai refactorisé comme une méthode d'extension pour Regex, que je ne peux pas montrer dans un commentaire, donc j'ajouterai comme une réponse supplémentaire quelque peu redondante ci-dessous. –
Cela lèvera une exception si la clé n'est pas trouvée. – Axel