C#: String zu “Camel-Case” konvertieren

Last Updated on 1. September 2021 by Thomas J. Fehr

Vorgaben

  • Die Funktion entfernt “-“, “_” und ändert den darauf folgenden Buchstaben auf einen Grossbuchstaben
  • Der erste Buchstaben wird nur grossgeschrieben, wenn dieser bereits im Eingabe-String gross ist

Beispiele

calculate_total-pricecalculateTotalPrice
Get_from-weather_apiGetFromWeatherApi

Meine Lösung

public static string ToCamelCase(string str)
{
    return Regex.Replace(str, @"[-_]\w", delegate(Match matches)
        {
            return matches.ToString().Substring(1).ToUpper();
        });
}

Meine optimierte Lösung

Die Regex Anpassung mit zusätzlichen Klammern @”[-_](\w)” – Subexpression ermöglicht es, direkt auf den gesuchten Buchstaben zuzugreifen.

public static string ToCamelCase(string str)
{
    return Regex.Replace(str, @"[-_](\w)", delegate (Match matches)
    {
        return matches.Groups[1].Value.ToUpper();
    });
}

Meine zweite optimierte Lösung

Das “Delegate” kann auch mit “Lambda expressions” geschrieben werden.

Lambda expression

public static string ToCamelCase(string str)
{
    return Regex.Replace(str, @"[-_](\w)", 
        m => m.Groups[1].Value.ToUpper());
}

Unit-Test

public void ToCamelCaseTest()
{
    Assert.AreEqual("calculateTotalPrice", 
        Snippets.ToCamelCase("calculate_total-price"));
    Assert.AreEqual("GetFromWeatherApi", 
        Snippets.ToCamelCase("Get_from-weather_api"));
}

Nützliches

Tool for building and testing regular expressions on the .NET regex engine: http://regexstorm.net/tester

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.