C# : FormattableString

C# : FormattableString

Aujourd’hui, je viens de découvrir la class FormattableString 2 ans après que ça soit sortie.
Cette classe a été ajouté avec la fonctionnalité de string interpolation en C# 6.0.

String interpolation

Pour rappel la string interpolation a été une petite révolution car elle nous a permit de rendre le code beaucoup plus clair.

Par exemple pour formater une string je n’ai plus à écrire :

string firstName = "jérémy";
var title = String.Format("{0} est heureux", firstName);

Je peux écrire plus simplement :

string firstName = "jérémy";
var title = $"{firstName} est heureux";

Mais en quoi est-ce lié aux FormattableString ?

Si vous voulez conserver cette chaine de caractère et les variables sans calculer la string car vous avez besoin de garder les deux parties distinctes .NET fournit la classe FormattableString.

Son utilisation est quasiment transparente :

string firstName = "jérémy";
FormattableString title = $"{firstName} est heureux";

Par défaut toutes string interpolé est utilisable en tant que FormattableString sans écrire une seule ligne de code.

Un exemple d’utilisation

Un des usages intéressants pourrait être de vouloir transformer une FormattableString en string url encodé.

private string ToUrlFriendly(FormattableString formattableString)
{
   var args = formattableString.GetArguments().Select(arg => WebUtility.UrlEncode(arg.ToString())).ToArray();
   return string.Format(formattableString.Format, args);
}

L’utilisation de la fonction est très simple :

string search = "jérémie est heureux youtube";

var url = ToUrlFriendly($"https://www.google.com/search?q={search}");

Va générer :

https://www.google.com/search?q=j%C3%A9r%C3%A9mie+est+heureux+youtube

Pour aller plus loin :

Happy coding 🙂

Merci à Jérémy pour sa relecture attentive.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pin It on Pinterest