Heim >Backend-Entwicklung >C++ >Wie kann ich eine benannte String-Formatierung in C# erreichen?

Wie kann ich eine benannte String-Formatierung in C# erreichen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 15:44:40251Durchsuche

How Can I Achieve Named String Formatting in C#?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn