Heim >Backend-Entwicklung >C++ >Wie kann ich eine benannte String-Formatierung in C# erreichen?
Benannte String-Formatierung in C#
In Programmiersprachen wie Python können Sie Strings nach Namen statt nach Position formatieren. Sie könnten beispielsweise eine Zeichenfolge wie diese haben:
print '%(language)s has %(#)03d quote types.' % \ {'language': "Python", "#": 2}
Dies würde „Python hat 002 Anführungszeichentypen“ ausgeben.
In C# gibt es keine integrierte Methode zum Formatieren von Zeichenfolgen mit Namen. Es gibt jedoch einige Möglichkeiten, ein ähnliches Ergebnis zu erzielen.
Verwendung eines Wörterbuchs
Eine Möglichkeit besteht darin, ein Wörterbuch zu verwenden, um Variablennamen ihren Werten zuzuordnen. Anschließend können Sie das Wörterbuch an eine benutzerdefinierte Zeichenfolgenformatierungsmethode übergeben, die die Variablennamen zum Formatieren der Zeichenfolge verwendet.
Hier ist ein Beispiel:
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; }
Sie können diese Methode wie folgt verwenden:
var values = new Dictionary<string, object> { { "some_variable", "hello" }, { "some_other_variable", "world" } }; string formattedString = FormatStringByName("{some_variable}: {some_other_variable}", values);
Verwenden der String-Interpolation
In C# 6.0 und Später können Sie die Zeichenfolgeninterpolation verwenden, um Zeichenfolgen nach Namen zu formatieren. String-Interpolation ist eine Funktion, mit der Sie Ausdrücke direkt in Strings einbetten können.
Hier ist ein Beispiel:
string formattedString = $"{some_variable}: {some_other_variable}";
Dies würde „Hallo: Welt“ ausgeben.
Erweiterungsmethoden
Eine weitere Option besteht darin, Erweiterungsmethoden zu verwenden, um der Zeichenfolge benannte Zeichenfolgenformatierungsfunktionen hinzuzufügen Klasse. Hier ist ein Beispiel für eine Erweiterungsmethode, die Sie verwenden können:
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; } }
Sie können diese Erweiterungsmethode wie folgt verwenden:
string formattedString = "{some_variable}: {some_other_variable}".FormatByName(new { some_variable = "hello", some_other_variable = "world" });
Das obige ist der detaillierte Inhalt vonWie kann ich eine benannte String-Formatierung in C# erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!