Formatage de chaînes nommées en C#
Dans les langages de programmation comme Python, vous pouvez formater les chaînes par nom plutôt que par position. Par exemple, vous pourriez avoir une chaîne comme celle-ci :
print '%(language)s has %(#)03d quote types.' % \ {'language': "Python", "#": 2}
Cela afficherait "Python a 002 types de guillemets."
En C#, il n'existe pas de méthode intégrée pour formater les chaînes. par nom. Cependant, il existe plusieurs façons d'obtenir un résultat similaire.
Utiliser un dictionnaire
Une option consiste à utiliser un dictionnaire pour mapper les noms de variables à leurs valeurs. Vous pouvez ensuite transmettre le dictionnaire à une méthode de formatage de chaîne personnalisée qui utilise les noms de variables pour formater la chaîne.
Voici un exemple :
public static string FormatStringByName(string format, Dictionary<string, object> values) { // Create a regular expression to match variable names in the format string. var regex = new Regex(@"\{(.*?)\}"); // Replace each variable name with its value from the dictionary. var formattedString = regex.Replace(format, match => values[match.Groups[1].Value].ToString()); return formattedString; }
Vous pouvez utiliser cette méthode comme ceci :
var values = new Dictionary<string, object> { { "some_variable", "hello" }, { "some_other_variable", "world" } }; string formattedString = FormatStringByName("{some_variable}: {some_other_variable}", values);
Utilisation de l'interpolation de chaînes
En C# 6.0 et plus tard, vous pourrez utiliser l'interpolation de chaîne pour formater les chaînes par nom. L'interpolation de chaînes est une fonctionnalité qui vous permet d'incorporer des expressions directement dans des chaînes.
Voici un exemple :
string formattedString = $"{some_variable}: {some_other_variable}";
Cela afficherait "hello: world".
Méthodes d'extension
Une autre option consiste à utiliser des méthodes d'extension pour ajouter une fonctionnalité de formatage de chaîne nommée à la chaîne. classe. Voici un exemple de méthode d'extension que vous pouvez utiliser :
public static class StringExtensions { public static string FormatByName(this string format, object values) { // Get the type of the values object. var type = values.GetType(); // Get the properties of the values object. var properties = type.GetProperties(); // Create a regular expression to match variable names in the format string. var regex = new Regex(@"\{(.*?)\}"); // Replace each variable name with its value from the values object. var formattedString = regex.Replace(format, match => { var property = properties.FirstOrDefault(p => p.Name == match.Groups[1].Value); if (property != null) { return property.GetValue(values).ToString(); } else { return match.Groups[1].Value; } }); return formattedString; } }
Vous pouvez utiliser cette méthode d'extension comme ceci :
string formattedString = "{some_variable}: {some_other_variable}".FormatByName(new { some_variable = "hello", some_other_variable = "world" });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!