# 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…

- Auteur: Jérôme Giacomini
- Langue: fr
- URL canonique: [C# : FormattableString](https://jeromegiacomini.net/fr/articles/2019/03/14/c-formattablestring)
- Publié le: 2019-03-14
- Dernière modification: 2026-09-05
- Thèmes: .NET, C#

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 :

```csharp

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


Je peux écrire plus simplement :

```csharp

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 :

```csharp

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.**

![](https://jeromegiacomini.net/Blog/wp-content/uploads/2019/03/jeremy.png)

## Un exemple d’utilisation

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

```csharp

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


**L&#8217;utilisation de la fonction est très simple :**

```csharp

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

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


Va générer :

```csharp

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


## Pour aller plus loin :
  - [La documentation officielle de FormattableString](https://docs.microsoft.com/fr-fr/dotnet/api/system.formattablestring?view=netframework-4.7.2)
  - [La doc sur la string interpolation](https://docs.microsoft.com/fr-fr/dotnet/csharp/tutorials/string-interpolation)



Happy coding &##x1f642;

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